有人在我的数据库中删除了一个表。怎么样?

时间:2013-11-17 06:57:44

标签: php mysql security

在我的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已禁用

2 个答案:

答案 0 :(得分:0)

他可能进入了下一个字符串 '1'; ;

如果我没弄错,这个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等。