2012-02-22 11 views
0

現在、このタイプのPDO文を使用して、以下の配列に変数を挿入します。私はPDOステートメントを使ってPHPでの挿入を行う最も安全な方法であると言われました。PDO POSTで挿入する

$qry = $db->prepare('INSERT INTO twocents (path, name, message) VALUES (?, ?, ?)'); 
$qry->execute(array($path, $name, $message)); 

今、かつてのように安全で投稿フォームからPOST値に$path$name、そして$messageを設定するのでしょうか?これらの変数が何かによって設定されていない場合は、INSERTを実行する方法が他にどれほどあるかわかりません。

ありがとうございます!

答えて

1

はい、これはSQL注入防止の点で完全に安全です。

しかし、おそらく出力のデータをエスケープする必要があります。 $messageを受け取った場合は<script language="Javascript" src="http://evil.site.com/evil.script.js"></script>です。<p><?=$message?></p>と出力したくない場合があります。 <p><xsl:value-of select="message"/></p>message<p/>ノードテキスト値として扱われ、処理されたXMLを文字列に書き込むときに自動的にエスケープされるように、HTML(XML)コードとデータを別々に処理することによってこの問題を解決するテンプレートエンジン(XSLTなど)もあります。

0

場合によっては、おそらく問題ありません。しかし、$ _POSTデータに何らかのタイプのsanitizationを実行して、それを準備済みのステートメントに挿入することをお勧めします。そうしないと、データベースにぎこちないデータが入る可能性があります。準備されたステートメントは、関係なく役立ちます。

0

はい。これはセキュリティ保護されています(SQLインジェクションのみ)。

関連する問題