特定の状況では、
sqlインジェクション mysql_real_escape_string()
mysql_real_escape_string()
脆弱性分析
いくつかのシナリオでは、攻撃者はASCII文字の文字セット(GBK、SJKなど)をサポートするために選択されたの欠陥を使用できます。
攻撃者は、無効なマルチシーケンスシーケンスを含む効果的な負荷を構築できます(たとえば、XBFX27など)。したがって、クエリに挿入すると、SQLが注入されます。 mysql_real_escape_string()
mysql_real_escape_string()
攻撃者が
からの値を設定した場合、
の保護をバイパスし、テーブル内のすべての線を取得できます。<code class="language-php">$login = mysql_real_escape_string($_POST['login']); $password = mysql_real_escape_string($_POST['password']); $sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";</code>
対策を緩和します$_POST['login']
\xbf\x27 OR 1=1 /*
新しいMySQLバージョンにアップグレードします。mysql_real_escape_string()
新しいMySQLバージョン(MySQL 5.1など)には、この特定の問題の修理手順が含まれています。
安全な文字セットを使用します:キャラクターセットを使用しない 'を使用し、キャラクターセットを有効な文字(UTF8、LATIN1など)として使用します。
PDOでのシミュレーション前処理ステートメント:pdo :: Atmulating_preparesは、実際の事前処理文の使用を強制するために虚偽に設定されています。
以上がSQL インジェクションは特定の文字セット条件下で `mysql_real_escape_string()` をバイパスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。