php - 何时过滤/清理数据 : before database insertion or before display?

标签 php html filter sanitize

当我准备解决输入数据过滤和清理问题时,我很好奇是否有最佳(或最常用)的做法?在将数据插入数据库之前过滤/净化数据(HTML、JavaScript 等)是否更好,还是应该在准备以 HTML 显示数据时完成?

一些注意事项:

  • 我是用 PHP 做的,但我怀疑这个问题的答案与语言无关。但是,如果您有任何特定于 PHP 的建议,请分享!
  • 这不是为数据库插入转义数据的问题。我已经让 PDO 处理得很好。

谢谢!

最佳答案

在显示用户提交的数据时,普遍接受的口头禅是“过滤输入,转义输出”。

我建议不要在进入数据库之前转义 html 实体等内容,因为您永远不知道 HTML 何时不再是您的显示媒介。此外,不同类型的情况需要不同类型的输出转义。例如,在 Javascript 中嵌入字符串需要与在 HTML 中不同的转义。之前这样做可能会让自己陷入一种虚假的安全感。

因此,基本的经验法则是,在使用前进行 sanitizer ,并专门针对该用途进行 sanitizer ;不先发制人。

(请注意,我不是在谈论转义 SQL 的输出,只是为了显示。请仍然对 SQL 字符串绑定(bind)的数据进行转义)。

关于php - 何时过滤/清理数据 : before database insertion or before display?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1274558/

相关文章:

javascript - 按 Enter 键时将光标移动到下一个文本字段

javascript - 如何使用ajax和xml将自动完成搜索中的值放入隐藏字段

python - 根据某些标准过滤 RDD

javascript - Kendo UI Grid 自定义过滤器菜单在第一次过滤或清除后中断

jQuery 如何将类添加到特定的 div

PHP 删除标点符号(无破折号)

用于登录脚本的 PHP Autologin 函数

javascript - 使用 jquery 为动态创建的 div 指定 <h4 id ="name"> 标签

php - 正则表达式作为抵御 XSS 的第一道防线

php - php mysql 中的高级关键字搜索