对于此代码:
HashMap temphashMap = session.getAttribute("abc");
如何使用ESAPI针对跨站点脚本漏洞验证hashmap?
答案 0 :(得分:0)
你不能这样做。为了进行验证,您必须事先知道HashMap
中每个项目的特殊规则和数据流。
如何判断应用程序中的某个表单字段是否为富文本字段,就像我用来键入此答案的字段一样?如果某些HTML标记合法怎么办?
你无法知道。
这就是为什么确保数据正确编码以获得适当的上下文的重要性要高出100倍。
为此,您将使用ESAPI.encoder()
类中的方法。
与您要求的最接近的是在每个请求/响应对上设置servlet过滤器,然后使用像AntiSamy这样的XSS过滤器来允许某些标记进入和禁止其他标记。但是,HTML属性,HTML标记文本或<textarea>
块中使用的值的规则不同。在将所有数据移交给另一个解释器之前,您必须编写相当多的逻辑来避免所有数据。