0

wordpress プラグインを調べていますが、次のような入力フィールドを持つフォームがあります。

<input type="text" name="user_email" id="email1" value="'.strip_tags($_POST['user_email']).'"  class="short" tabindex="2" /> 

値の strip_tags は、この入力を介して送信されたものはすべてタグがストライプ化されることを意味しますか? SQLインジェクトに対して?

代わりに、このフォームの対象ファイルにこのセキュリティ対策を実装するべきではありませんか?

これがSQLインジェクションに対する保護に役立つかどうかを理解するのに苦労しています

4

3 に答える 3

2

まず、strip_tags()はSQLインジェクションに対する防御ではありません。次に、Francois Bが指摘したように、タグはHTMLフォームが読み込まれたときにのみ削除されます。ユーザーがWebブラウザでフォーム自体に何を入力するかは関係ありません。フォームが送信された後、mysqlクエリが実行される前に文字列をサニタイズする必要があります。

繰り返しますstrip_tags()が、これはSQLインジェクション対策ではありません。SQLインジェクションからほぼ確実に保護したい場合は、プリペアドステートメントを調べる必要があります。mysql_real_escape_string()ほとんどの場合、 SQLインジェクションから保護するには、入力を文字ホワイトリストでサニタイズし、を使用して、変数が一重引用符で囲まれていることを確認するだけで十分です。

PHPとmysqlを使用しているときに、新しい開発者が自分の足を撃つことは非常に簡単です。Googleで調査を行い、 http://bobby-tables.com/を必ずお読みください。潜在的に脆弱なスクリプトを公開する前に、助けを求め、経験豊富な誰かにコードをレビューしてもらってください。

于 2012-06-17T10:20:20.657 に答える
1

前に述べたように、プリペアドステートメントはsql-injectionに対する最善の防御です。

システム対策の中で、mod_securityアプリケーションファイアウォールを追加します(WordpressがApache上にあり、構成を制御できる場合はApacheレベルで)、sql-injectionや他の多くのエクスプロイトに対して役立ちます。

于 2012-06-17T12:31:24.577 に答える
0

今回のみ、タグをストライプ化します (HTML 入力フィールドに値を設定します。これは、HTML コンテンツを生成するときにサーバー側で行われると想定しています)。パラメータでデータベースにアクセスするときも同じことをしなければなりません。

于 2012-06-17T10:07:37.470 に答える