如何针对跨站点脚本清理查询字符串输入 - 反映 ASP .Net(Web 窗体)应用程序中的问题?

Posted

技术标签:

【中文标题】如何针对跨站点脚本清理查询字符串输入 - 反映 ASP .Net(Web 窗体)应用程序中的问题?【英文标题】:How to sanitize the query string input against cross site scripting - reflected issues in ASP .Net (Web Forms) Application? 【发布时间】:2020-03-22 17:25:53 【问题描述】:

我正在开发一个遗留应用程序,当我们从查询字符串中获取输入时,它有一些跨站点脚本 - 反映问题。 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 是一个查询字符串参数,其中传递了恶意负载,它在响应中显示警报。

上面的payload在渲染后变成alert(56645)

像这样,报告了几个类似的问题。是否有任何集中的方法可以通过使用任何 ASP .Net 库一次性解决所有问题,或者在配置中进行一些更改而不是修复每个问题,或者我必须一个一个地解决所有问题?

修复后,当插入恶意脚本时,页面不应返回 200 响应。我们必须返回一个错误请求作为响应。

【问题讨论】:

【参考方案1】:

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

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

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

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

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

在输出上编码数据

【讨论】:

以上是关于如何针对跨站点脚本清理查询字符串输入 - 反映 ASP .Net(Web 窗体)应用程序中的问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复跨站点脚本(XSS)?我们可以使用 .htaccess 修复吗

如何防止跨站点脚本?

如何防止跨站点脚本攻击

Unity Web 游戏是不是容易受到跨站点脚本的影响

如何检测SQL注入技术以及跨站脚本攻击

跨站点脚本编制和重定向问题