什么是URL的"足够的清理"

asl*_*lum 8 php mysql sanitization

该URL将是

  1. 保存到MySQL数据库
  2. 用于在用户的个人资料上显示图片

strip_tags()和mysql_real_escape_string()就够了吗?

zom*_*bat 16

"足够的消毒"完全取决于你所谈论的环境.MySQL的清理应该被认为 Web输出的清理完全分开,你应该单独处理它们以避免很多麻烦.

消毒MySQL

  • mysql_real_escape_string() 将清理一段数据并使其安全放入SQL查询.
  • 应该绝对忽略任何其他类型的恶意数据,例如字符串中的HTML标记.试图在这里操纵它会让你头疼,因为你试图在将它从数据库中取出之后"取消操作"它.糟糕的"网络数据"不会损害您的数据库.

消毒产量

  • htmlspecialchars($val)在输出时将防止任何恶意代码无法呈现,因为<>字符转换为它们的实体表示而不是呈现为标签分隔符.
  • ENT_QUOTES如果要输出HTML元素的quoted属性中的内容,请使用修饰符,例如<input name="email" value="<?php echo htmlspecialchars($email,ENT_QUOTES); ?>" />

除非您有特殊要求,否则这应该是您所需要的. strip_tags()不应该真正用于清理,因为它可能被错误形成的HTML所欺骗.清理是一个有价值的目标,如果你可以将你的上下文分开,你将会遇到更少的数据操作问题.

  • +1 仅在需要时进行消毒。当然,清理 SQL 是“邪恶的”,只需使用参数化查询...... (2认同)