在我的php脚本中,所有输入都以这种方式用mysqli_real_escape_string“过滤”:
$categoryid = mysqli_real_escape_string($link, $_GET['id']);
$query = "SELECT categories.id AS cid, categories.title AS ctitle
FROM categories
WHERE cid=".$categoryid.";";
$rows = mysqli_query($link, $query);
$row = mysqli_fetch_array($rows);
有人可以告诉我,他是如何攻击我的数据库并删除“category_post”表的?
register_globals已禁用
答案 0 :(得分:0)
如果我没弄错,这个php函数不会阻止sql注入,它只确保sql字符串是合法的 和 SELECT categories.id AS cid,categories.title AS ctitle 来自类别 WHERE cid =' - 1'; SQL INJECTION STRING; 是sql的合法字符串
答案 1 :(得分:0)
您是否已采取措施确保无法进行sql注入?你可以采取一些防止注入的方法是在查询之前使用mysql_real_escape_string()来转义post和get变量的任何引号,或者使用mysqli或PDO而不是mysql_query使用预处理语句。另外,作为额外的安全措施,您可以创建一个单独的用户来连接具有有限访问权限的mysql,并且不允许该用户使用DROP等。