セキュリティの高いアプリケーションがあり、他のユーザーに表示されるURLをユーザーが入力できるようにしたいと考えています。
これにより、XSSハッキングのリスクが高くなります。ユーザーがJavaScriptを入力して、別のユーザーが実行する可能性があります。私たちは機密データを保持しているので、これが決して起こらないことが不可欠です。
これに対処するためのベストプラクティスは何ですか?セキュリティホワイトリストまたはエスケープパターンだけで十分ですか?
リダイレクトの処理に関するアドバイス(たとえば、リンクをたどる前に警告ページに「このリンクはサイト外に出ます」というメッセージが表示されます)
ユーザーが入力したリンクをまったくサポートしないという議論はありますか?
明確化:
基本的に、ユーザーは次のように入力します。
stackoverflow.com
そして、それを別のユーザーに出力させます。
<a href="http://stackoverflow.com">stackoverflow.com</a>
私が本当に心配しているのは、XSSハックでこれを使用していることです。つまり、彼らは入力します:
alert('ハッキング!');
したがって、他のユーザーはこのリンクを取得します。
<a href="javascript:alert('hacked!');">stackoverflow.com</a>
私の例は、リスクを説明するためだけのものです。JavaScriptとURLは異なるものであることはよく知っていますが、後者を入力させることで、前者を実行できる可能性があります。
このトリックで壊すことができるサイトの数に驚かれることでしょう-HTMLはさらに悪いです。彼らがリンクを扱うことを知っているなら、彼らはまた、サニタイズ<iframe>
し、<img>
賢いCSS参照を知っていますか?
私は高度なセキュリティ環境で作業しています。1回のXSSハッキングで、非常に高い損失が発生する可能性があります。考えられるすべてのものを除外できる正規表現を作成できる(またはこれまでの優れた提案の1つを使用できる)ことができてうれしいですが、それで十分でしょうか?