1

重複の可能性:
mysql インジェクションとクロス サイト スクリプティングを防御する最善の方法
mysql 挿入ステートメント内に PHP 変数を含める方法

パスワード フィールドからテキストを取得するときに、 stripslashesステートメントに出くわした人がいるかどうか、また、そのような場合に SQL インジェクションを実行する方法があるかどうか疑問に思っていました。

つまり、PHP 言語では、Web サイトのパスワード フィールドからテキストを取得し、それを stripslashes ステートメントに渡して (') を削除すると、( ' OR 1=1 --) が ( ) になりOR 1=1ます。また、SQL インジェクションを実行しにくくします。

4

2 に答える 2

3

stripslashes\引用符 ( ) ではなく、エスケープ文字であるスラッシュ ( ) をデータから削除します'。どちらかといえば、それを使用すると、SQL インジェクションの脆弱性が存在する可能性が高くなります。

SQL インジェクションを防ぐには、準備済みステートメントとパラメーター化されたクエリを使用します

于 2012-04-07T12:31:09.573 に答える
1

パスワードにストリップスラッシュを使用しないでください。ユーザーが意図的に入力したスラッシュを削除している可能性があるためです。使用している rdbms に従って、SQL インジェクション エスケープを防止します。これにより、ユーザーが入力したがエスケープされた文字列とまったく同じ文字列を確実に入力できるため、SQL インジェクションは発生しません。

mysql の場合、mysql_real_escape_stringを使用します

別のより良いオプションは、準備済みステートメントを使用することです。PHP の最近のすべてのデータベース ドライバーで利用できます。一般的なアルゴリズムは

  1. ステートメントを準備します。通常は準備機能による
  2. 値をバインドします。通常は bind 関数によって。
  3. ステートメントを実行します。通常は exec 関数。
于 2012-04-07T12:33:24.757 に答える