我正在使用htmlspecialchars()
函数来防止XSS攻击。我怀疑从后续存储数据到数据库的更好方法是什么。在将数据存储到数据库之前转义/编码用户输入还是将它存储为数据库并在检索时将其转义?
方法1:应用htmlspecialchars()
函数后存储用户输入值。使用它,用户输入"<script>"
将变成“& lt; script & gt;” 。
方法2:将用户输入保存原样并应用htmlspecialchars()
方法,同时检索数据并将其显示在页面上。
我怀疑的原因是我相信使用方法1会在数据库上产生开销,而使用方法2的数据需要在通过php请求时再次进行转换。所以我不确定哪一个更好。
欲了解更多信息,我使用htmlspecialchars($val, ENT_QUOTES, "UTF-8")
,以便将其转换“和”为好。
请帮我清楚我的疑问。如有可能,还提供解释。
感谢。
'htmlspecialchars()'不会阻止SQL注入攻击。此外,每个人都应该使用参数化查询。 – 2012-03-01 08:34:42