2011-08-01 9 views
0

私はすでにPDOを使用:SQLインジェクションを避けるために、phpでデータをサニタイズする方法は?

 $stmt = $aPDO->prepare("INSERT INTO ".$this->getM_oUser()->getM_sTableName()." (email, hash_pw, hash_key) VALUES (:email, :hash_pw, :hash_key)");            
     $stmt->bindValue(':email', $this->getM_oUser()->getM_sEmail()); 
     $stmt->bindValue(':hash_pw', $this->getM_oUser()->getM_sHash_pw()); 
     $stmt->bindValue(':hash_key', $this->getM_oUser()->getM_sHash_Key()); 

     $stmt->execute(); 

は、私はまた、ユーザの入力文字列を処理するために)(mysql_real_escape_stringのを使用する必要がありますか?ありがとうございました。

+0

の可能重複[PDOは、SQLインジェクションを防ぐのに十分な書類を作成していますか?](のhttp:// stackoverflowの.com/questions/134099/are-pdo-prepared-statements-sufficient-to-prevent-sql-injection) –

答えて

1

バインドされたパラメータでprepared statementを使用するだけで十分です。 mysql_real_escape_stringを使用する必要はありません(そして、あなたが望む場合でも、おそらくあなたはそれを行うためにMySql接続リソースが必要です)。

0

私はあなたのテーブル名から無用の文字の多くを排除するためにそのような何かをしたい:

$tableName = '`' . preg_replace('`[^-a-zA-Z0-9_]`', $this->getM_oUser()->getM_sTableName()).'`'; 
$stmt = $aPDO->prepare("INSERT INTO ".$tableName." (email, hash_pw, hash_key) VALUES (:email, :hash_pw, :hash_key)"); 
関連する問題