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

时间:2010-08-30 02:05:03

标签: php mysql sanitization

这是我最近从 - Sams Teach Yourself Ajax, JavaScript, and PHP All in One学到的一本书中使用的消毒功能。

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

function sanitizestring($var)
{
  $var = strip_tags($var);
  $var = htmlentities($var);
  $var = stripslashes($var);
  return mysql_real_escape_string($var);
}

2 个答案:

答案 0 :(得分:8)

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

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

因此,我会使用mysql_real_escape_string()进行查询,使用htmlspecialchars()来回显用户提交的字符串。还有很多要知道的。做一些further reading

答案 1 :(得分:1)

您也可以考虑将filter-input应用于此filtersscope