首页 > 解决方案 > 如何针对跨站点脚本清理查询字符串输入 - 反映 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 响应。我们必须返回一个错误请求作为响应。

标签: asp.netwebformsxssquery-stringwebsecurity

解决方案


使用以下建议来避免 Microsoft.NET 语言中的跨站点脚本攻击:

URL 编码:防止恶意脚本被注入到 URL 中。

不:您可以使用 Microsoft Web 保护库 (WPL) 来避免所有 xss-Reflected 问题。

例如:<a href=<%# Microsoft.Security.Application.Encoder.UrlEncode(TEST.Url) %>>View Details</a>

启用内容安全策略 (CSP) 验证的输入数据:输入数据应在执行前进行验证。 XSS-微软.NET

在输出上编码数据


推荐阅读