我正在使用 htmlspecialchars()
功能来防止XSS攻击。我对以下将数据存储在数据库中的更好方法有疑问。
方法 1:应用 htmlspecialchars()
后存储用户输入值功能。使用它用户输入 "<script>"
将变成“<脚本>” .
方法 2:按原样存储用户输入并应用 htmlspecialchars()
方法,同时检索数据并将其显示在页面上。
我怀疑的原因是我认为使用方法1会对数据库有开销,而使用方法2数据在通过php请求时需要一次又一次地转换。所以我不确定哪个更好。
有关更多信息,我正在使用 htmlspecialchars($val, ENT_QUOTES, "UTF-8")
这样也会转换 ' 和 "。
请帮我解开疑惑。如果可能,还请提供解释。
谢谢。
最佳答案
- 为什么您希望始终在 HTML 上下文中使用数据? “我 <3 你”和“我 <3 你”不是相同的数据。因此,按预期将数据 存储在数据库中。没有理由存储它以逃脱。
HTML 在必要时转义数据,让您有信心知道自己在做什么。这:
echo htmlspecialchars($data);
比:
好很多echo $data; // The data should already come escaped from the database. // I hope.
关于php - 在将用户输入存储到数据库之前对其进行转义/编码或将其按原样存储在数据库中并在检索时转义它更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9512873/