我正在使用 Fortify 静态代码分析来分析我们的软件。Fortify 报告说我们有一个跨站点脚本漏洞(反映),而我认为我们实际上并没有这样做。
我可以尝试与我的客户争论这一点,以说服他们这是安全的(没有人愿意做的事情,因为它需要审计)或者让 Fortify 高兴;
我从 ASP.NET 中的请求中获取了一个表单参数,然后“手动”(不使用 API)对其进行转义(转义任何换行符、\ 字符、引号并删除任何脚本标签)。然后我将它转储回浏览器
output.Write("var enteredText = \"" + htmlEscape( Form.Params["enteredText"] ) +"\"");
强化抱怨,除非我这样做
output.Write("var enteredText = \"" + htmlEscape( HttpUtility.HtmlEncode(Form.Params["enteredText"]) ) +"\"");
但这意味着要使用 Javascript var 'enteredText' 我必须使用 Javascript 对其进行 HTML 解码,这意味着我的应用程序上还有 10k 的代码(除非我错了)。在这种情况下,<> 和实体的整个编码和解码都是多余的,不是吗?
我怎样才能安抚Fortify?