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