如何针对跨站点脚本清理查询字符串输入 - 反映 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 窗体)应用程序中的问题?的主要内容,如果未能解决你的问题,请参考以下文章