0

我正在为我的 Web 应用程序构建一个基本的安全层。我正在寻求对我正在采取的步骤的验证。当前的重点是 XSS,所以我在这篇文章中不涉及数据库。这是我到目前为止所做的:

  1. htmlspecialchars() 所有用户输入
  2. 将某些关键字列入黑名单 {"","","text/javascript"} :我正在使用 preg_replace 将这些单词替换为 ""。
  3. 输出转义所有动态内容。

所有这些似乎都是一个非常微不足道的安全层。谁能推荐更好的策略?

4

1 回答 1

1

你的方法太简单了。htmlspecialchars 在每种情况下都无济于事。

这是一个非常好的关于 XSS 的备忘单,以及当您转义将放入 HTML 的字符串时会出现什么问题。

https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29

黑名单也有它的缺点。例如,某些浏览器可能会解析

text/javascript

text/java
       script

一样的方法。新行和空格从后者中删除,因此它被解释为第一个。所以黑名单不会是防弹方法。

最好的策略是使用一些已经为您处理所有这些的模板库。库必须知道字符串所在的上下文。元素值需要与属性值不同的转义。

于 2013-04-18T19:03:46.707 回答