我提前为我的问题的普遍性道歉,但是我无法在网络上找到任何有用的建议来帮助那些与我一样想要做同样事情的人。让我描述一下我的情况:
我为网站的最终用户/设计师提供了定制视图的功能,通过将这些视图(使用 Razor)存储在数据库中。我已经完成了所有工作,但是我的问题是:从安全角度来看,如何确保和执行不希望的代码不会在用户定义的视图中运行?我认为有两种基本方法可以在概念上起作用,但不确定哪种更可行。
选项1:在管理工具中创建验证方法,允许用户输入视图代码。这需要采取白名单或黑名单方法来限制什么是允许的或不允许的。
选项2:在呈现视图时防止不希望的代码能够执行。
例如,我们不希望允许访问读取或写入文件,在web.config中访问任何数据访问函数,甚至访问配置设置等。可能会有一个相当大的列表,列出了可能不应该被允许的许多与安全相关的问题。
我的问题是,哪种方法是最好的选择?还可以提供关于如何进行任何方向吗?我曾经认为我可以基于信任级别的更改,这将是选项2,但无法找到任何在每个视图基础上让它工作的方法(管理代码允许执行任何操作)。我认为选项1最终会成为最佳选择,我需要检查不应被允许的某些框架函数的输入。是否有任何人对我正在尝试做的事情有任何经验?非常感谢您的任何反馈!
我为网站的最终用户/设计师提供了定制视图的功能,通过将这些视图(使用 Razor)存储在数据库中。我已经完成了所有工作,但是我的问题是:从安全角度来看,如何确保和执行不希望的代码不会在用户定义的视图中运行?我认为有两种基本方法可以在概念上起作用,但不确定哪种更可行。
选项1:在管理工具中创建验证方法,允许用户输入视图代码。这需要采取白名单或黑名单方法来限制什么是允许的或不允许的。
选项2:在呈现视图时防止不希望的代码能够执行。
例如,我们不希望允许访问读取或写入文件,在web.config中访问任何数据访问函数,甚至访问配置设置等。可能会有一个相当大的列表,列出了可能不应该被允许的许多与安全相关的问题。
我的问题是,哪种方法是最好的选择?还可以提供关于如何进行任何方向吗?我曾经认为我可以基于信任级别的更改,这将是选项2,但无法找到任何在每个视图基础上让它工作的方法(管理代码允许执行任何操作)。我认为选项1最终会成为最佳选择,我需要检查不应被允许的某些框架函数的输入。是否有任何人对我正在尝试做的事情有任何经验?非常感谢您的任何反馈!