php sql 注入(inject)

标签 php sql

这几天一直在网上冲浪,对SQL INJECTION ATTACK有所了解。我试图在我的本地机器上实现以了解如何做到这一点,以便我可以在我的系统中阻止它...

我写过这样的代码

PHP 代码:

if(count($_POST) > 0){

       $con = mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db('acelera',$con) or die(mysql_error()); //
    echo $sql = 'SELECT * FROM acl_user WHERE user_email = "'.$_POST['email'].'" AND user_password = "'.$_POST['pass'].'"';
    $res_src = mysql_query($sql);
    while($row = mysql_fetch_array($res_src)){
        echo "<pre>";print_r($row);echo "</pre>";
    }
}

HTML 代码:

<html>
<head></head>
<body>

 EMAIL : <input type="text" name="email" id="email" /><br />
    PASWD : <input type="text" name="pass" id="pass" /><br />
    <input type="submit" name="btn_submit" value="submit email pass" />
        </body>
</html>

通过此代码,如果我将输入作为 "OR ""=",则应该完成 sql 注入(inject)。 但它不能正常工作。如果我在密码字段中输入以上内容,则在发布数据中我会添加斜线。

谁能告诉我 SQL INJECTION ATTACK 实际上是如何完成的?(代码会更有值(value))

最佳答案

您可能启用了魔术引号。检查 get_magic_quotes_gpc 的返回值.

“魔术引号”是 PHP 的一种古老尝试,自动神奇地防止 SQL 注入(inject),但在当前版本中它已被弃用,我们鼓励您使用 prepared statements以避免 SQL 注入(inject)。

参见 here如何禁用它们以便您可以试验 SQL 注入(inject)。

关于php sql 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6678245/

相关文章:

javascript - md5 字符串的 base64_encoding - php 与 javascript 问题

php - 如何编写正则表达式来匹配不以短语结尾的行?

android - 我如何处理SQLiteConstraintException错误代码19?

mysql - 电子商务数据库中产品组的制作方法

mysql - MySQL 中 SUM() 和 COUNT() 的区别

php - 在 PHP 中使一个接口(interface)覆盖它从另一个接口(interface)继承的方法

javascript - 按键时增加数字 (JavaScript)

php - 需要找到一个外部数据库的前缀

mysql - SQL - 检查唯一列对的条件

php - mysql中的'IN'子句使执行速度变慢,还有其他选择吗?