SQLインジェクションとXSSに対する保護の非常に興味深いオプション
非常に尊敬されるダンカミンスキー氏(ダンカミンスキー-DNSの根本的な脆弱性の発見で知られる)は、
SQLインジェクションと
XSS から保護する
ための非常に興味深い普遍的な手法
を提案しました。
この方法は非常にシンプルで、その見事なものです。
この手法の本質は、SQLクエリでbase64表現のすべてのデータを置き換えることです。したがって、SQLクエリで使用されるデータのパーサー/アナライザー(プレースホルダーなど)を使用しても意味がありません。
これはすべて、次のような行で大まかに説明できます。
「SELECT * mytable from textfield = base64_decode( 'Q29vbEhhY2tlcnM =')」
base64_decodeは、特定のデータベースによって実装されるbase64デコード関数です。
base64には特殊文字が含まれていないため、入力されたデータからのリクエストに対する脅威はありません。 入力を何らかの方法でスクリーニングしたり変更したりする必要はありません。 それらをbase64でエンコードし、リクエストを渡すだけで十分です。
この手法は、クライアント側にも適用できます-データを引用符で囲む必要がある場合(イベントハンドラーやjsなど)。 元のデータを取得する必要がある場合、jsでBase64デコードを直接実行できます。
私の観点から見ると、この方法は素晴らしいです。 2つの欠点があります(私の意見では)-この方法で保存された変数のメモリの増加は30%(base-64エンコーディングの機能)であり、入力パラメータをエンコードする必要があるためサーバー負荷が増加します(無視できると思います)、およびサーバー負荷デコードの必要性によるDB(ただし、これは無視しないと思います)。
ただし、正確には、実験を行う必要がありますか、それとも、この問題について意見を共有する準備ができている知識のあるユーザーがユーザーの中にいますか?
関連リンク:
ダン・カミンスキー
base64
ダン・カミンスキーの方法について
All Articles