3

私は単純なコメント システムを持っています。ユーザーが にテキストを入力するtextareaと、PHP スクリプトが実行され、ユーザーがログインしているかどうか、送信が押されてすべてが入力されているかどうかがチェックされます。データの挿入が続行されます。私の質問は、エスケープ/トリム/ストリップするには何が必要ですか? 現在、私のクエリは次のようになっています。

$sql = $con->prepare("INSERT INTO Comments (user, comment, pageid, time) VALUES (:user, :comment, :pageid, NOW())");
$sql->bindValue(":user", $user, PDO::PARAM_STR);
$sql->bindValue(":comment", $comment, PDO::PARAM_STR);
$sql->bindValue(":pageid", $pageid, PDO::PARAM_INT);
$sql->execute();

変数は、POSTメソッドを使用してフォームから取得されます。これはSQLインジェクションに対して安全ですか、それともデータを挿入する前に追加のトリミングとエスケープを行う必要がありますか?

4

1 に答える 1

3

プリペアドステートメントとプレースホルダーを使用してPDOを使用している限り、実質的に可能な限り安全です。

配列で->execute()を使用することをお勧めします。これは、変数を手動でバインドするよりもはるかに簡単です。

$sth = $con->prepare('INSERT INTO Comments (user, comment, pageid, time) VALUES (?, ?, ?, NOW())');

$sth->execute(array($user, $comment, $pageid));
于 2013-02-18T12:45:46.847 に答える