最近,我的数据库遇到了来自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);