SQL インジェクション攻撃を回避するために、Web サイトのユーザーが入力したすべてのテキスト (およびその他のほとんどのデータ) をデータベースに送信して保存する前にクレンジングすることを検討しています。
関数が悪意のある可能性のあるすべての文字 ( \n 、 ' 、 " など) の前にバックスラッシュ ( \ ) を挿入し、返された文字列に新しく追加されたバックスラッシュが含まれていることを期待していたという印象を受けました。
このような悪意のある可能性のある文字を含む作成された文字列に対して簡単なテストを実行し、それをドキュメントにエコーしたところ、まさに期待どおりの結果が得られました。これらの文字をバックスラッシュでエスケープした文字列です。
そこで、データベースに格納する前に、データにクレンジング機能を追加しました。データストレージ用に作成したクエリに (mysqli_real_escape_string( $link , $string)) を挿入しました。スクリプトをテストしたところ、データベースに保存されているデータにバックスラッシュが含まれていないように見えて驚きました (少し残念でした)。テストしてテストしてテストしましたが、すべて役に立たず、途方に暮れています...
助言がありますか?何か不足していますか?その後、stripslashes($string) 関数でバックスラッシュを削除する必要があると予想していましたが、削除するものはないようです...