【发布时间】:2013-08-18 11:38:17
【问题描述】:
我知道大多数答案会说使用 PDO/Mysqli,但我正在尝试看看我是否可以这样做,然后继续学习 PDO/Mysqli:
这个功能是否足以防止mysql注入?
function anti_inject($sql)
{
$sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"), "", $sql);
$sql = preg_replace("/[^a-zA-Z0-9]+/", " ", $sql);
$sql = mysql_real_escape_string($sql);
$sql = trim($sql);
$sql = strip_tags($sql);
$sql = addslashes($sql);
$sql = strtolower($sql);
return $sql;
}
为这一行寻找更好的替代品 $sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|*|--|\\)/") , "", $sql);
因为我确实想检查具有“来自”“选择”“插入”游戏标签等的名称
我已经禁用了 mysql 用户的 drop table
【问题讨论】:
-
在学习使用现代库之前,您为什么要学习使用已弃用、过时且通常很糟糕的库?
-
这看起来就像点击电视遥控器上的每个按钮只是为了改变频道。您可能已更改频道,但您也可能已启动 DVD 播放器并将图像从彩色变为黑白。最好先检查遥控器的正确按钮。 (即阅读有关SQL injection的文档!)
标签: php mysqli code-injection