2012-04-07 5 views
-1

可能性の重複:
Best way to defend against mysql injection and cross site scripting
How to include a PHP variable inside a mysql insert statementSQLインジェクションに対するストライプスラッシュの効果?

パスワードフィールドからテキストを取得するとき、誰もがstripslashes声明に出くわした場合、私は思っていた、と行うにどのような方法があればこれはSQLインジェクションですか?

PHPの言語では、ウェブサイトのパスワードフィールドからテキストを取得し、stripslashesステートメントを通過させて( ')so(' OR 1=1 --)を削除して(OR 1=1)にすることができます。また、SQLインジェクションを難しくしています。

+1

あなたが質問をdownvoteするか、または近い投票をする**理由を説明してください**。私は質問がサイトの話題に絶対にあると思う。 – nico

+4

ストリップスラッシュは、引用符ではなくスラッシュを削除します。 '' OR 1 = 1 --''は '' OR 1 = 1 --''のままです... – Konerak

+0

@nico - 票を閉じるには、理由を選択する必要があります。 (私がこのコメントをした時点で)閉会に投票した2人の人々は、「本当の質問ではない」と言いました。私は彼らのポイントを見ることができます、それは明らかに質問されていません(そして、誤った前提に基づいています)。 – Quentin

答えて

3

stripslashesは、エスケープ文字であるスラッシュ(\)を引用符(')ではなくデータから削除します。何かがあった場合は、を増やすと、がSQLインジェクション脆弱性の可能性を高めます。

SQLインジェクションを防ぐためにuse prepared statements and parameterized queries

+0

こんにちは。私が書いていたコードを誤解しているようです。 (私はPHPに新しいです)。mysql_real_escape_stringは私が参照していたものです。 –

1

パスワードにstripslashを使用しないでください。これは、ユーザーが意図的に入力したスラッシュを取り除くためです。あなたが使用しているrdbmsに従ってSQLインジェクションのエスケープを防ぐ。これは、ユーザーが入力したのとまったく同じ文字列を入力することを確認しますが、SQLインジェクションは行われません。

MySQLの使用のために

mysql_real_escape_string

もう一つの良いオプションは、プリペアドステートメントを使用することです。 PHPの最近のデータベースドライバで利用できます。汎用アルゴリズムは

  1. です。通常は、関数を用意してください。
  2. 値をバインドします。通常はバインド関数によって呼び出されます。
  3. ステートメントを実行します。通常はexec関数です。
+1

mysql_real_escape_stringを使用しないでください。手動すぎるので、偶然どこかに残しておくのも簡単です。パラメータ化されたクエリが優れています。 – Quentin

関連する問題