1

リンクや画像など、ほとんどのものを正しくレンダリングするサードパーティのHTMLをWebページに表示しています。基本的に、すべてのスクリプトに対してサニタイズしたいと考えています。

<script>...</script>

しかし、物事はかなり創造的になる可能性があります。スクリプトが「script」タグの外側に表示される可能性がある単純なケースは次のとおりです。

<a href="javascript:alert('XSS')"> 

そして、私たちは間違いなくリンクを許可する必要があります。

実際、多くの人が知っていると思いますが、問題はかなり残酷です:http: //ha.ckers.org/xss.html

ユーザーがWebサイトにコメントを投稿している状況では、すべてのHTMLをエスケープするか、、、、およびを除くすべてのHTMLをエスケープするだけ<em>で済み<i>ます。私の場合、すべてのHTMLを許可する必要がありますが、すべてのスクリプトを無効にする必要があります。これははるかに困難ですが、珍しい要件ではありません。このレベルのHTML許容性とXSS安全性をサポートするライブラリまたはツールはありますか?<u><s>

言語、優先順に:Python、PHP、Java、C /C++。

4

4 に答える 4

0

あなたが見つけることができる最も堅牢な XSS 防止にほかならないことをお勧めします。一般に、許可しない要素と属性 (および値) をブラックリストに登録するのではなく、許可する要素と属性 (および値) をホワイトリストに登録するのが最善の方法です。

セキュリティに加えて、マークアップが有効であることを確認するのに役立つHTML Purifierでのみ PHP ベースのソリューションを提供できます (ユーザーが送信した HTML スニペットに最適です)。

http://ha.ckers.org/を見つけたようです。リソースとしてOWASP (Open Web Application Security Project) を使用することもお勧めします。

于 2012-05-15T22:30:07.227 に答える
0

javascript (または jQuery) を使用して、ページを送信する前に、<a>正規表現を使用するタグに対して href の形式が http:// であることを確認できます。

于 2012-05-15T22:00:57.627 に答える
0

私の知る限り、そのサイトには XSS インジェクション全体のみがリストされています。のような方法strip_tagsは、断片化された (マルチポイント) インジェクションでは機能しません。あなたができる最善の方法は、文字をページに表示する前に、PHP のようなもので文字をエンコードすることです。htmlentitiesしかし、そうすると HTML が表示されなくなります。

フォーラムが行う方法のように、代替のマークアップを行うことができます ([code][/code]構文を持つもの)。また、ここで StackOverflow で使用されているのと同じエディターであるMarkdownの使用も検討してください。これは、テキストの書式設定のみが必要な場合に簡単に使用できます。

于 2012-05-15T22:01:16.657 に答える
0

PHP フレームワークである CodeIgnitor の使用を検討したことがありますか?

xss_clean() 関数などを含むセキュリティ クラスがあり、ニーズを非常に厳密に処理するように見えます。

http://codeigniter.com/user_guide/libraries/security.html

于 2012-05-15T22:01:49.537 に答える