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
ダン・カミンスキーの方法について

Source: https://habr.com/ru/post/J100552/


All Articles