javascript - 潜在危险的Request.QueryString——如何在不关闭安全功能的情况下预防

标签 javascript asp.net ajax security

当我使用查询字符串中编码的一些数据执行发布时,我收到此消息。我浏览过这方面的网页,所有的解决方案都是关于关闭验证——这对我来说似乎是倒退的。我想要做的是修改查询字符串,以便它不会首先触发验证。

查询字符串使用以下 javascript 进行 urlEncoded:

var qs = 'i=' + id+ '&c=' + encodeURIComponent(c) + '&' + 'p=' + encodeURIComponent(p);

“Id”只是一个整数,因此 c 和 p 参数是唯一可能导致此问题的参数,并且它们都是 URI 编码的。

什么原因导致此错误,除了 uri 编码之外,我还可以采取哪些措施来防止投诉? 我不喜欢关闭安全功能。开车时系好安全带是明智之举。

最佳答案

这是一条仅供未通过驾驶考试的人使用的安全带。如果输出编码正确,“潜在危险”查询字符串值就不再危险。

例如,如果字符 "输出为 HTML,应编码为 " ,或者如果字符 '输出到 JavaScript 则应编码为 \x27 .

ASP.NET 请求验证仅在您未正确编码输出时保护您的代码,此外,它仅保护通过启用了请求验证的网站输入的值。来自任何其他来源(例如共享数据库、另一个应用程序或外部 API)的任何输入都不会通过请求验证进行验证。这就是为什么我会对您的应用程序进行编码以处理正确的输出编码。如果stackoverflow.com阻止潜在危险的输入,那么人们就不可能在他们的帖子中编写这样的代码:<script>alert('example');</script> ,但使用正确的输出编码,如您所见,这是安全的。

查看我在 ASP.NET Security 上的帖子(A3-跨站脚本 (XSS) 部分)。

另请参阅OWASP XSS Prevention Cheat Sheet .

关于javascript - 潜在危险的Request.QueryString——如何在不关闭安全功能的情况下预防,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22232107/

相关文章:

javascript - 为什么带有 'await'的这行代码会触发微任务队列处理呢?

ASP.NET Excel导出编码问题

php - 通过 ajax 从输入类型=文件发送原始文件数据

javascript - 捕获 XHR 的 404 错误

c# - 在 ASP.NET 代码隐藏中声明一个全局变量

PHP 对 ajax 的响应

javascript - 匹配 5pt 到 30pt 的正则表达式

javascript - 重置特定表格中的值,这些值是在单击重置按钮时编辑的

php - Javascript 中的输出日期作为字符串

asp.net - 如何在 SQL Server 表中创建图像列并使用 VB 在 ASP.NET 中检索它