使用pdo脚本保护mysql数据库免受注入攻击

时间:2013-05-04 15:35:52

标签: php mysql pdo sql-injection code-injection

最近,我的数据库遇到了来自mysql注入的攻击。在此事件之前,我不知道注射情况。但是,我一直在研究它是什么以及如何防止它,但是当我尝试添加sql注入保护时,我似乎无法为此脚本工作(它在它自己的工作正常)。像这样的pdo脚本如何添加sql注入保护?

   <?php
    $username = $_GET["hits"];
    $sq = "something";
    $pu = $_GET["something"];
    $jjj = "something";
    $fff = "something";
    $dbh = new PDO("mysql:host=$sq;dbname=$pu", $jjj, $fff);
    $sql = 'SELECT autoj FROM tabl WHERE username = ?';
    $params = array( $username );
    if ( isset( $_GET['q'] ) ) {
      $sql .= " AND myname LIKE ?";
      $params []= '%'.$_GET['q'].'%';
    }
    $q = $dbh->prepare( $sql );

    $q->execute( $params );
    $doc = new DOMDocument();
    $r = $doc->createElement("mutablerec" );
    $doc->appendChild( $r );
    foreach ( $q->fetchAll() as $row) {
       $e = $doc->createElement( "mutablerec" );

        $e->setAttribute( 'autoj', $row['autoj'] );


        $r->appendChild( $e );

    }
    print $doc->saveXML();

    ?>

编辑:看来我的准备和执行应该阻止我。 但是,我是否需要包含:$ pdo-&gt; setAttribute(PDO :: ATTR_EMULATE_PREPARES,false);

0 个答案:

没有答案