GET および POST データに real_escape_string を使用する代わりに、暗号化 (base64 など) を使用できますか?
アプリケーションの速度が低下することはわかっていますが、セキュリティはどうですか?
どちらのオプションも同様に役に立たず、エラーが発生しやすくなります。
クライアントからアプリケーションへの通信を保護する手段としてクライアント側の暗号化を実行する場合は、HTTPS / SSL 暗号化が自分で行うよりも好ましい代替手段であることに気付くかもしれません。ハンドローリングの暗号化と復号化は、アプリケーションの通信に設計の複雑さの別の要素をもたらします。これは、設計方法によっては簡単に回避できる場合があります。
編集: アプリケーションサーバーでデータをデコードする必要があるため、データを暗号化してもインジェクション攻撃のリスクがなくなるわけではありません。巧妙な攻撃者は、送信前に暗号化方式をピギーバックし、好きなペイロードを注入することができます。
まず、base 64 は暗号化とは関係ありません。これは、任意のバイナリ データをテキストとしてエンコードし、必要に応じてデコードすることを可能にするエンコードメカニズムです。
次に、準備されたステートメント(または少なくともパラメーターがバインドされた API) を使用します*_real_escape_string
。
誰でも自分の悪いインジェクションをbase64でbase64エンコードできるため、まったく良い考えではありません。また、6b4 でエンコードされたデータのカスタム ソルトをリバース エンジニアリングするのはかなり簡単です。