开发者社区> 问答> 正文

ADOdb中的SQL注入和一般网站安全性

我已经读了很多书,但仍然不了解100%某些SQL注入是如何发生的!

我想从认识的人那里看到基于我的示例的SQL注入的具体示例,因此可以对其进行复制,测试和修复。我试图用SQL注入我的代码,但不能,所以我希望有人证明我的能力!

1.我对吗,SQL注入只能通过POST或GET方法进行,这意味着在网站上它应该是发布形式,例如“注册或搜索”或“ search.php?tags = love”之类的查询吗?

说这是否可能注入具有POST方法的以下代码?

$name = trim($_POST['username']); $mail = trim($_POST['email']); $password = trim($_POST['password ']);

if ($errors == "false") { $sql = "INSERT INTO clients SET name='" . mysql_real_escape_string($name) . "', mail='" . mysql_real_escape_string($mail) . "', password='" . mysql_real_escape_string(sha1($password)) . "'"; $connection->execute($sql);

}

2.另一个有GET方法: rate.php?like&videoID=250&userID=30

$sql = "SELECT videoID FROM likes WHERE videoID = '" .mysql_real_escape_string($videoID). "' AND UID = '" .mysql_real_escape_string($userID). "' LIMIT 1"; $connection->execute($sql); 请帮助那些对此主题感到随意但使用具体示例的人。

展开
收起
保持可爱mmm 2020-05-11 11:44:38 405 0
1 条回答
写回答
取消 提交回答
  • 当用户输入的编码不正确时,就会发生SQL注入攻击。典型地,所述用户输入是一些数据的用户和她的查询时,在值即发送$_GET,$_POST,$_COOKIE,$_REQUEST,或$_SERVER阵列。但是,用户输入也可以来自各种其他来源,例如套接字,远程网站,文件等。因此,您应该将除常量(例如'foobar')以外的所有内容都视为用户输入。

    在您发布的代码中,mysql_real_escape_string用于编码(=转义)用户输入。因此,该代码是正确的,即不允许任何SQL注入攻击。

    请注意,忘记打给您很容易mysql_real_escape_string-对于熟练的攻击者来说,一次就足够了!因此,您可能希望将现代的PDO与预准备语句一起使用,而不要使用adodb。来源:stack overflow

    2020-05-11 11:45:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载