2009-08-05 10 views
2

シナリオ:SQLデータベースに格納される情報を「クリーン」にする最良の方法は何ですか?

私は投稿をしたいブログがあります。私はブログの投稿を書いて別のPHPページに投稿して、それをデータベースに保存して(それが私の投稿であることを確認した後に)それを読んでホームページに表示するフォームを設定しました。どのような引用符や、それがデータベースに格納されるのを妨げても、それを適切に表示できるようにするにはどうすれば簡単にエスケープできますか?それはMySQLデータベースに格納されているの妨げになるだけで物事が簡単にmysql_real_escape_string()でエスケープすることができ

おかげ

答えて

4

Prepared statements PHPは、データがデータベースに入るときに、そのデータをサニタイズすることができます。

+1

+1:バインド変数はエスケープを適用しようとするよりはるかに優れています。 –

4

データベースから取り出したときに、すべてがエスケープされて配置される前と同じに見えます。ウェブページに表示する前に、テキストにhtmlspecialchars()を実行して悪意のある行為を防ぐスクリプト作成は効果がありません。

テキストに任意のHTMLがまったく含まれないようにするには、オプションのコマンドはstrip_tags()になります。

1

準備されたステートメントは、常に本当に良いアイデアです。しかし、データベースコードをストアドプロシージャに移動することを検討することもできます。これにより、セキュリティとパフォーマンスが向上します(ほとんどの場合、使用するデータベースと結果のキャッシュ方法によって異なります)。

ストアドプロシージャのルートを使用しない場合は、データベースへの呼び出しごとに複数行のコマンドを無効にしてください。これは、データベースの設定ファイルになければなりません。それは、これを行う可能性が無効になります:

あなたのコマンドを、他の方法がありますが

を悪意のあるコマンド、これは間違いなく最も安全です。

+0

情報ありがとう! –

関連する問題