我正在解决Java中的跨站点脚本问题。由于我是OWASP的新手,所以有人可以帮我弄清楚如何在以下情况下使用OWASP清理输入内容。


Enumeration<String> EnumHeader = request.getHeaderNames();
Map<String, String[]> pMap = request.getParameterMap();
Object value = request.getHeader(key);
String[] refs = (req.getParameterValues(REFS_NAME));

最佳答案

尽管数据验证对于防止XSS很有帮助,但不一定涵盖持久XSS的所有基础。唯一的100%有效保护是OWASP Java编码器项目或OWASP ESAPI的编码器提供的适当的上下文输出编码。造成这种情况的一个原因是持久性XSS,受污染的数据可能来自某个DB,该DB可能由另一个具有对相同DB表的插入/更新访问权限但未进行适当数据验证的应用程序输入或更改。 (也就是说,受污染的数据可能会通过应用程序以外的其他方式进入系统。)因此,唯一安全的解决方案是进行适当的上下文输出编码。您已经指出的OWASP XSS预防备忘单是一个很好的起点,它解释了所有这一切。

09-11 18:31