javascript - 如果我使用 ValidationRequest=True 来防止 asp.net 中的 XSS(跨站脚本),我们是否需要 Html 编码?

标签 javascript jquery asp.net encoding xss

我在asp.net中使用ValidationRequest =“True”,它不允许用户输入html标签和脚本,但我被告知要在浏览器中显示用户数据时进行html编码,说使用单引号( ') 和双引号 (") 可能会导致 XSS 脚本。

当我查看各种来源时,我认为如果我不允许页面中存在 html 和脚本,则不需要编码。当我们在 asp.net 页面中使用 validRequest=true 时,我无法创建需要在后端进行编码的情况。如果没有必要的话我真的不想使用html编码。

是否有使用 ValidationRequest=true 后仍需要进行 html 编码的示例?

谢谢。

最佳答案

对用户提供的数据进行编码很重要。您确实应该对来自用户的所有内容进行编码。尽管用户将被阻止输入任何看起来像标签的内容(基本上是带有尖括号的内容),但引号在其他情况下(例如包含在 html 元素的属性中)也是危险的。

例如,假设您有一个带有按钮的页面,该按钮使用用户提供的一些数据调用 JavaScript 函数。

<asp:Button ID="btnSubmit" runat="server" Text="Do something"></asp:Button>

在后面的代码中,将客户端点击属性设置为某个用户提供的值:

string userInput = ""; // <-- from wherever
btnSubmit.OnClientClick= "someFunction('" + userInput + "')";

如果您的用户输入类似 a'); 的内容location.href = "http://www.evil.com";// 你的提交按钮将会做一些你真的不希望它做的事情 - 导航到邪恶的地方。

尽管这显然是一个非常人为的示例,但通常最好只对所有用户输入进行编码。

关于javascript - 如果我使用 ValidationRequest=True 来防止 asp.net 中的 XSS(跨站脚本),我们是否需要 Html 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19441683/

相关文章:

javascript - 如何以编程方式禁用 chrome 开发人员工具中的 javascript?

javascript - 有没有办法为 HTML 下拉菜单设置说明文本但不用作选项?

javascript - 使用 jQuery 在公共(public) 'root' 中选择另一个 div

javascript - 从 json 中提取单个项目并以 html 形式显示

c# - 自动重定向页面

asp.net - 用于文件上传的自定义按钮文本

c# - WCF 服务库项目找不到对其他项目的引用

javascript - 如何在 JavaScript 中根据对象值对数组进行排序?

javascript - 如果快速多次单击,jQuery 删除属性将不起作用

javascript - JQuery UI 可拖动根本不起作用!