这是一种安全/强大的输入消毒功能吗?

MrV*_*mes 2 php mysql sanitization

这是我最近从中学到的一本书中使用的消毒函数--Sams Teach Yourself Ajax,JavaScript和PHP All in One.

我一直在自己的PHP网站上使用它.对于现实世界的使用是否安全?

function sanitizestring($var)
{
  $var = strip_tags($var);
  $var = htmlentities($var);
  $var = stripslashes($var);
  return mysql_real_escape_string($var);
}
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 8

我会说这太笼统了.对于很多用途来说它可能是安全的,但它通常会给字符串带来不必要的副作用.并非每个字符串都应该像那样进行转义.

  • mysql_real_escape_string()应该只在SQL查询中使用.更好的是,用PDO绑定params.
  • 在插入数据库之前,为什么要覆盖条带标签和编码实体?也许在出路的时候做.
  • 对于XSS预防,htmlspecialchars()更多的是你的朋友.将字符集作为参数赋予它.

所以我会mysql_real_escape_string()用于查询,并htmlspecialchars()用于回显用户提交的字符串.还有很多要知道的.做一些进一步的阅读.