问题描述
我正在使用ASP.NET Webforms创建的一些旧版Web应用程序,这些应用程序正在使用Trustwave进行扫描。我们正在使用.NET Framework 4.6。
Types of encoding detected:
URL encoding
Unencoded injection string: **CENZIC123 !"#$%&'()*+,-./:;<=>?@[]^_`{|}~\CENZIC456**
Characters that were not encoded in the detection string: !()*-._~
Characters that should have been encoded for URL encoding: ****!()~****
Injection URI: https://mywebsite/Authentication/Login.aspx?CENZIC123%20!%22%23%24%25%26'()*%2B%2C-.%2F%3A%3B%3C%3D%3E%3F%40%5B%5D%5E_%60%7B%7C%7D~%5CCENZIC456
我试图通过将默认的HTTP编码器更改为Web.Config内的HTTP运行时节点中的Antixss编码器来解决此问题,如Microsoft文档所建议的那样。但是我仍然在扫描中报告了该问题。
该如何解决?
谢谢。
解决方法
我遇到了与您有些相似的问题。网关阻止了查询字符串中包含'
的请求。这与您的网站设置不太相关,由安全扫描程序报告。
我们的解决方案是将查询字符串编码为Base64
,并且网关不再阻塞。在客户端,您可以使用btoa(encodeURIComponent(...))
将该字符串编码为base64编码。在服务器端,Convert.FromBase64String(HttpUtility.UrlDecode(base64String))
会将其转换回去。