asp.net - 如何针对跨站点脚本清理查询字符串输入 - 反映 ASP .Net(Web 窗体)应用程序中的问题?
问题描述
我正在开发一个具有一些跨站点脚本的遗留应用程序 -当我们从查询字符串中获取输入时反映了问题。Fortify 代码扫描 (WebInspect) 工具正在报告这些问题。
例如:
我有一个名为 ProgressDisplay.aspx 的页面,它将 reportPath 作为查询字符串参数。
/ReportViewer/ProgressDisplay.aspx?reportPath=%27%3b%61%6c%65%72%74%28%35%36%36%34%35%29%2f%2f
在上面的代码中,reportPath 是一个查询字符串参数,其中传递了恶意负载,它在响应中显示警报。
上面的有效载荷alert(56645)
在渲染后变为。
像这样,有几个类似的问题被报告。是否有任何集中的方法可以通过使用任何 ASP .Net 库一次性解决所有问题,或者在配置中进行一些更改而不是修复每个问题,或者我必须一个一个地解决所有问题?
修复后,当插入恶意脚本时,页面不应返回 200 响应。我们必须返回一个错误请求作为响应。
解决方案
使用以下建议来避免 Microsoft.NET 语言中的跨站点脚本攻击:
URL 编码:防止恶意脚本被注入到 URL 中。
不:您可以使用 Microsoft Web 保护库 (WPL) 来避免所有 xss-Reflected 问题。
例如:<a href=<%# Microsoft.Security.Application.Encoder.UrlEncode(TEST.Url) %>>View Details</a>
启用内容安全策略 (CSP) 验证的输入数据:输入数据应在执行前进行验证。 XSS-微软.NET
在输出上编码数据
推荐阅读
- javascript - 如何清除在javascript中用圆弧绘制的圆圈?
- jupyter-notebook - Jupyter ImportError:无法导入名称'create_prompt_application'ubuntu 18.04
- hadoop - 如何在 HDFS 中查找文件的创建日期
- arrays - mongodb 在聚合中使用 $count
- c++ - 在 C++ 类中分配给数组的正确方法是什么?
- java - 石头剪刀布不能按预期工作
- javascript - 如何让一个按键分别触发多个事件
- git - 在合并之前重写一次提交
- javascript - DocSearch 和 Sphinx 不能一起工作
- c# - uwp 如何一次调整模板项目源中的项目大小?