【发布时间】:2016-02-02 09:07:14
【问题描述】:
对于此代码:
HashMap temphashMap = session.getAttribute("abc");
如何使用 ESAPI 针对跨站脚本漏洞验证 hashmap?
【问题讨论】:
-
不清楚你在问什么。 “验证”是什么意思?
-
我需要针对跨站脚本漏洞验证 Hashmap/Collection,这是安全漏洞的一种。
对于此代码:
HashMap temphashMap = session.getAttribute("abc");
如何使用 ESAPI 针对跨站脚本漏洞验证 hashmap?
【问题讨论】:
你不能这样做。为了进行验证,您必须提前知道HashMap 中每个项目的特殊规则和数据流。
您如何判断应用程序中的某个表单字段是否是富文本字段,就像我用来输入此答案的那个字段一样?如果某些 HTML 标签是合法的怎么办?
你不知道。
这就是为什么确保数据正确编码以适应其正确上下文的重要性要高出 100 倍。
为此,您将使用 ESAPI.encoder() 类中的方法。
最接近您要求的方法是在每个请求/响应对上设置一个 servlet 过滤器,然后使用 AntiSamy 之类的 XSS 过滤器来允许某些标签进入并禁止其他标签。但是,对于 HTML 属性、HTML 标记文本或 <textarea> 块中使用的值,规则是不同的。您必须编写大量的逻辑来避免在将所有数据交给另一个解释器之前转义所有数据。
【讨论】: