对所有用户输入进行编码以防止rXSS

时间:2017-05-03 16:11:11

标签: java security xss

我正在尝试解决安全漏洞以阻止xss。

我应该编码所有用户输入,例如<>存储到数据库之前的标签,或者我应该将原始输入存储到数据库中,只在从数据库中重新获取数据并在HTML上显示时才编码HTML?

1 个答案:

答案 0 :(得分:1)

反射XSS指的是当脚本未存储时的攻击,它向客户端显示相同的输入。例如,在搜索中输入名称,系统的答案为"名称未找到。"在这种情况下,您可以放置​​脚本而不是名称。

如果要存储要稍后读取的输入。它被称为存储的XSS。你怎么能预防呢?这是一个困难的部分。您可以使用白名单验证。如果您的输入是HTML,则可以使用OWASP_Java_HTML_Sanitizer_Project https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project

什么时候需要使用enconding?您需要根据将使用的上下文来调用数据。例如,如果您需要在HTML页面上显示数据,则需要在显示数据之前对HTML进行编码。但是如果你需要在JS脚本上使用它,你需要使用URL enconde。 enconde取决于您使用数据的上下文。