2011-01-13 10 views
1

私はデータベースにアクセスする前に$ _getまたは$ _postを使用しています。

私はそれが十分ではないと確信していますが、どれくらい安全ですか?私はそれをより安全にするためにいくつかの表現と組み合わせることができますか?

ありがとう!

これはどうですか? mysql_real_escape_string(htmlspecialchars($ value));

+0

'htmlspecialchars'は、データベースの入力を安全にすることとは関係ありません。データベースのエスケープ関数またはパラメータ化されたクエリ(PDO)を使用します。 – webbiedave

+0

あなたの主体と身体の変化は、答えが不十分に見えます。あなたは「すべきか」と尋ねたようです。答えは「いいえ、あなたはすべきです」と思われます。だから私はあなたの変更を元に戻すことをお勧めします。 –

答えて

5

いいえ、それでは不十分です。 SQLインジェクション攻撃を防ぐには、mysql_real_escape_stringを使用する必要があります。

+0

が編集されました。 –

+0

@トニー、ええ、それは良く見えます。しかし、私は* raw *の値を保存します(例えば、 'htmlspecialchars'を使わないで)。値を取得していくつかのページに表示すると、 'htmlspecialchars'を使ってXSS攻撃を防ぐことができますが、エンコードされた文字列を保存する必要はありません。 –

+0

それでは、if(string_not_dangerous($ string)){save_normal_sting;} else {show(go_to_hell)}のような関数を作る方法がありますか? –

0

mysql_escape_string($ value)は、SQLクエリで使用される文字列をサニタイズするときに少し賢いです。

0

あなたは、データベースから引き出さデータを表示しているとき)(インジェクション攻撃(またはより良いまだ、PDOライブラリーのようなものでプリペアドステートメント)とはhtmlspecialcharsからデータベースを保護するために)(mysql_real_escape_stringのを使用する必要があります。

関連する問題