【发布时间】:2019-03-24 03:16:55
【问题描述】:
我通常使用以下函数来清理我的表单输入并获取值。但这突然停止工作,并且了解 get_magic_quotes_gpc() 功能已从 PHP 5.4 版本中删除。并且无法再启用或配置它,它被永久设置为“关闭”。现在我正在使用 PHP 5.6,有人可以建议我使用这样的函数来清理数据并防止 SQL 注入。
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
【问题讨论】:
-
我强烈建议在 PDO 上下文中使用准备好的语句,并从 mysql_* 函数继续。此外,mysql_* 在 PHP 7 中也被删除,只留下 PDO 和 mysqli_*。
-
get_magic_quotes_gpc这是一个倒退,我记得那些日子。最好避免魔术引号。5.4.0 Always returns FALSE because the magic quotes feature was removed from PHP.- php.net/manual/en/function.get-magic-quotes-gpc.php -
由于魔术引号被删除,你可以摆脱
if,基本上剩下mysql_real_escape_string()。但这个 API 在 PHP 7 中也已被弃用和删除。由于对 PHP 5 的支持将在今年年底结束,这将是迁移到 PHP 7 和 PDO 的好时机。 -
我真的无法抗拒这种冲动。这让我想起了 gieco 的广告“你住在岩石下吗”,并想象当那个人从岩石下跳出来看着广告牌时。还有广告牌上写着“还在使用魔术引号?”
标签: php function sql-injection sanitization