addslashes() は特殊文字をエスケープする目的は果たしますが、特殊文字に対する包括的な保護を提供するには不十分です。 SQL インジェクション攻撃。対照的に、mysql_real_escape_string() は、より広範な問題のある文字に対処することによって強化されたセキュリティを提供します。
具体的には、mysql_real_escape_string() は次の文字にスラッシュを追加します。
\x00, \n, \r, \, ', " and \x1a.
この強化された文字セットにより、 addslashes() のように一重引用符と二重引用符がエスケープされるだけでなく、他の潜在的に悪意のある文字も無効化されます。
この違いを説明するために、次の例を考えてみましょう。
$string = "' OR 1=1"; $addslashes_example = addslashes($string); // Escapes only single and double quotes $mysql_rescape_example = mysql_real_escape_string($string); // Escapes single, double, and \x1a characters echo $addslashes_example; // Outputs: \' OR 1=1 echo $mysql_rescape_example; // Outputs: \' OR 1=1\'
実証されているように、mysql_real_escape_string() は巧妙に細工された SQL インジェクション攻撃の実行を防止することでより堅牢な保護を提供しますが、addlashes() はシステムを脆弱なままにしておきます。 mysql_real_escape_string() と addslashes() の両方が非推奨となり、使用が推奨されなくなったことを認識することが重要です。代わりに、安全かつ効率的なデータベース対話のためにパラメータ化されたクエリを採用する必要があります。
以上がSQL インジェクションとの戦いにおいて、mysql_real_escape_string() はどのように addslashes() を上回るのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。