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

标签 java security xss

我正在尝试解决一个安全漏洞以防止 xss。

我应该在存储到数据库之前对所有用户输入(例如 <> 标签)进行编码,还是应该将原始输入存储到数据库中,并仅在从数据库检索数据并在 HTML 上显示数据时对 HTML 进行编码?

最佳答案

反射式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 取决于您使用数据的上下文。

关于java - 对所有用户输入进行编码以防止 rXSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43765171/

相关文章:

java - 如何使用 JAXB (JDK 7) 设置默认命名空间

java - 如何使用另一个方法中的变量? (找不到符号 - 变量 EvenNum)

java - 如何正确使用 Google Calendar API Events.Insert 命令?

.net - 发布 .net 强名称私钥的影响?

javascript - 为什么通过 JavaScript 从浏览器向本地主机发出的请求不会被阻止?

coldfusion - 在application.cfm中使用urlencode检测url中的XSS ColdFusion

java - Android 客户端 TCP

java - App Engine 使用对称密码

php - PHP 中最好的安全方法?

ruby-on-rails - Ruby on Rails - 何时使用 params.permit!以及如何更换它