为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

紫衣仙女 2019-08-23 09:40:11

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);

请帮助那些对主题感到自由的人,但请使用具体的例子。


查看完整描述

1 回答

?
慕慕森

用户输入编码不正确时,就会发生SQL注入攻击。典型地,所述用户输入是一些数据的用户和她的查询发送,即,值在$_GET$_POST$_COOKIE$_REQUEST,或$_SERVER阵列。但是,用户输入也可以来自各种其他来源,如套接字,远程网站,文件等。因此,您应该将除了常量(如'foobar')之外的所有内容视为用户输入

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

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


查看完整回答
反对 回复 2019-08-23

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信