我提前为我的问题的一般性质道歉,但是我无法从试图在网上做同样事情的人那里找到任何有用的建议.让我来描述一下我的情景:
我通过在数据库中存储视图(使用Razor)来为网站的最终用户/设计者提供定制视图的能力.我完成了所有这些工作,但我的问题如下:从安全角度来看,如何确保并强制执行不需要的代码不会在用户定义的视图中执行?我认为有两种基本方法在概念上有效,但我不确定哪种方法更可行或更可行.
选项1:在管理工具中创建一个允许用户输入视图代码的验证方法.这需要采用白名单或黑名单方法来实现或不允许.
选项2:防止在发生视图渲染时执行不需要的代码.
作为需要阻止的快速示例,我们不希望在web.config中允许访问读取或写入文件,访问任何数据访问功能,甚至访问配置设置等.可能存在一个可能不应该允许的大小合适的事物列表,但我需要坐下来尝试尽可能多地考虑与安全相关的问题.
我的问题是,哪种方法最好?此外,可以提供任何方向如何去做?我认为我可能能够进行基于信任级别的更改,这将是选项2,但是无法找到任何方法来使基于每个视图的庄园工作(管理代码可以执行它想要的任何内容).我认为选项1最终会成为最好的选择,我将不得不检查某些不应允许的框架函数的输入.有没有人有任何经验做我喜欢做的事情?任何反馈都非常感谢!
我有一个带有表单的Web应用程序,该表单允许用户输入几个朋友的联系信息。当用户尝试使用其中一个表单字段具有焦点时弹出的“自动填充联系人”选项时,来自所选联系人的信息将用于页面上的所有字段,而不是将自动填充限制为仅将当时有重点。
我仔细阅读了有关自动填充功能的文档,看起来为每个字段分组应用自动完成值“ section- *”应该足够了。我想我想做的事根本不可能,但是非常感谢熟悉自动填充设置的人员的输入!
这是我的代码:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" />
<form>
<fieldset class="container">
<div class="row">
<h2>First Friend</h2>
</div>
<div class="row">
<div>
<label for="SendRequestTo1FirstName">First Name</label>
<input type="text" id="SendRequestTo1FirstName" name="SendRequestTo1FirstName" maxlength="50" autocomplete="section-friend1" />
</div>
<div>
<label for="SendRequestTo1LastName">Last Name</label>
<input type="text" id="SendRequestTo1LastName" name="SendRequestTo1LastName" maxlength="50" autocomplete="section-friend1" />
</div>
<div>
<label for="SendRequestTo1Phone">Phone Number</label>
<input type="tel" placeholder="(111) 222-3333" id="SendRequestTo1Phone" maxlength="20" autocomplete="section-friend1" />
</div>
</div>
</fieldset>
<hr>
<fieldset class="container">
<div class="row">
<h2>Second Friend</h2>
</div>
<div class="row">
<div>
<label for="SendRequestTo2FirstName">First Name</label>
<input type="text" id="SendRequestTo2FirstName" name="SendRequestTo2FirstName" …Run Code Online (Sandbox Code Playgroud)