2011-07-29 6 views
0

クライアント側からのデータをサニタイズする関数を作成しようとしています。 私はzendフレームワークを使用していますが、私はそれがその機能を提供していることを知っています。しかし、私はzend_formを使用していないので、これらの関数の使用方法はわかりません。sendize with zend

dbに保存する前にSQLインジェクションのデータをサニタイズできませんか。

私の質問は、そこに何か機能があるのか​​、そうすることができるライブラリですか?
imは、文字列を入力として受け取り、消された文字列を返す関数を探しています。

あなたはPDO、Zend_Dbのまたは別のORMとのプリペアドステートメントを使用している場合はそれがほとんどの場合、消毒の世話をするので、その後のパラメータが適切にエスケープされます

答えて

2

ありがとうございました。

PDO例:

$pdo = new PDO($dsn, $username, $password); 
$pdo->prepare("INSERT INTO some_table (col1, col2, col3) VALUES (?,?,?)"); 
$pdo->execute(array($valueCol1, $valueCol2, $valueCol3)); 

あなたはZend_Validateが何のためにあるのかであるデータを検証する必要がありますけれども、あなたもそのステップに入る前に。 Zend_FormでZend_Validateを使用する必要はありません。バリデータインスタンスを作成してから別の値を検証するだけで済みます。 ZFのドキュメントから

例:

$validator = new Zend_Validate_EmailAddress(); 

if ($validator->isValid($email)) { 
    // email appears to be valid 
} else { 
    // email is invalid; print the reasons 
    foreach ($validator->getMessages() as $messageId => $message) { 
     echo "Validation failure '$messageId': $message\n"; 
    } 
} 

Zend_Formでは、フォーム処理を処理し、物事を簡単に再利用可能にするだけの手軽な方法です。

+0

PDOを使用していませんが、私のすべてのモデルはzend_db_tableから拡張されています。それは私のデータをサニタイズする必要はないという意味ですか?検証部分は です。私のすべてのデータを検証しています... –

+0

どうすればzend_db_table?それはデータを消毒するのですか? –

+0

あなたの質問をどのように発行するかによって異なります。もし、あなたが組み込みのメソッド(insert、delete、findなど)を使用していて、アダプタレベルにならない場合は、プリペアドステートメントを使用してパラメータを引用します。 Zend_Dbのドキュメントをさらに深く見直し、必要に応じてコードを見てください。 – prodigitalson