【问题标题】:SQL injection fixing in PHP [duplicate]PHP中的SQL注入修复[重复]
【发布时间】:2012-12-16 11:16:03
【问题描述】:

可能重复:
How to prevent SQL injection?

我想修复 appRain CMS 中的 SQL 注入: http://code.google.com/p/apprain-quickstart/downloads/list

如果有人可以帮助我,在哪个 php 文件中查找并给我正确的功能,那就太好了。

我尝试使用 mysql_real_escape_string,但我找不到正确的函数在哪里使用它。

利用:http://www.securityfocus.com/archive/1/520911

OR: /profile/-1 union all select 1,2,3,version(),5,6,7,8,9,10,11,12,13,14,15,16,17,18 ,19

谢谢

【问题讨论】:

    标签: php sql content-management-system


    【解决方案1】:

    正确阅读您提供的链接。

    问题的解决方法写在链接里

    1。 使用prepared statement类修复sql注入漏洞&过滤sql错误请求。 设置 error(0) 以防止通过异常或错误报告泄露信息。

    2。 解析输入字段并限制 () >

    做一个准备好的陈述

    $oDB=new PDO('..your connection.. ');
    $hStmt=$oDB->prepare("select * from users where id=:id");
    $hStmt->execute(array(':id',$userID));
    

    请注意,$userID 未与 SQL 字符串组合,因此 SQL 注入将无法对其进行处理。

    使用 mysqli_real_escape_string

    请注意,mysql_real_escape_string 已被弃用,因此我将提及如何使用 mysqli_real_escape_string

    $a= "'ABCD"; //will not work because of quotation
    
    $a= $mysqli->real_escape_string($a);
       //Now this is the string with special chars escaped
    

    更多信息请阅读

    PDOHow can I prevent SQL injection in PHP?

    转义字符串http://php.net/manual/en/mysqli.real-escape-string.php

    【讨论】:

    • 这不是答案,您引用的资源已在问题中链接。其余为评论材料。
    • 很公平。我对其进行了编辑以描述如何做到这一点。 :-) 干杯
    • 在我看来不是必需的,但玩得开心。太多的爱可能是因为这个 Q 可能很快就会被删除。
    • 嗯,首先,感谢您的快速回复。其次,如果你不能很好地阅读代码,就像我不能,我认为发布只是为了获得一些代表。我已经尝试了很多天,我只是找不到合适的功能。 “把工作交给专业人士”。说起来有点愚蠢,因为如果不尝试@hakre,您将无法达到专业水平。感谢 Carl,但在我看来,过滤 sql 错误并不是一个有效的修复方法,因为那不是 SQL 错误,而是真正有效的 SQL 注入,与 SQL 错误无关。
    • @user1676106 SQL 注入不是你可以修复的,它只是试图阻止的东西。这两种方法都会在很大程度上阻止它。过滤您提供给 SQL 的字符串似乎是我听说过的唯一选择,所以我不确定您所说的“这不是 SQL 错误,这是一个真正有效的 SQL 注入,与 SQL 错误无关。”
    猜你喜欢
    • 1970-01-01
    • 2021-02-09
    • 2017-05-02
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2021-10-13
    • 2016-11-08
    • 2016-11-13
    相关资源
    最近更新 更多