有人在我的数据库中删除了一个表。如何? [复制]
Posted
技术标签:
【中文标题】有人在我的数据库中删除了一个表。如何? [复制]【英文标题】:Someone has dropped a table in my database. How? [duplicate] 【发布时间】:2013-11-30 10:35:43 【问题描述】:在我的 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 已禁用
【问题讨论】:
谁知道-这里只有一个小sn-p。可能是二级注入攻击成功了,也可能是他通过其他方式获得了访问权限。 This xkcd 专为您创建。 【参考方案1】:他可能输入了下一个字符串 '1'; ;
如果我没记错的话,这个php函数不会阻止sql注入,它只是确保sql字符串是合法的 和 选择 categories.id 作为 cid,categories.title 作为 ctitle 从类别 哪里 cid='-1'; SQL注入字符串; 是 sql 的合法字符串
【讨论】:
如果我放那个字符串什么都不会发生【参考方案2】:你有没有采取措施确保sql注入是不可能的?您可以采取一些措施来防止注入,例如在查询之前使用 mysql_real_escape_string() 来转义 post 上的任何引号并获取变量,或者使用带有 mysqli 或 PDO 的准备好的语句而不是使用 mysql_query。另外作为一个额外的保障,您可以创建一个单独的用户来连接到具有有限访问权限的 mysql,并且不允许该用户使用 DROP 等。
【讨论】:
以上是关于有人在我的数据库中删除了一个表。如何? [复制]的主要内容,如果未能解决你的问题,请参考以下文章