2009-05-23 7 views
10

XSSのような悪意のある入力をフィルタリングするのに有効な、維持管理されたPythonライブラリがありますか?XSSフィルタリングのためのPythonライブラリ?

+0

まあ何

あなたを助けることができるCGIモジュールで何かがあります。あなたはあなたが保持したいもののための特別な要件を持っていましたか? – SpliFF

+0

私はちょうど上記のコメントが非常に素朴であることを指摘したいと思います。もしあなたがそれを読んだら、また読んでみてください:https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheetを開始として。 – mkoistinen

答えて

0

Strip-o-Gramライブラリはかなりいいですね。私は適切にチェックアウトしていませんが、それはうまくやっているようです(つまり、指定したHTMLタグをホワイトリストに入れることができますし、HTMLエスケープなものは厄介です)。

ここでは、そのページから引用した使用例スニペット、です:

from stripogram import html2text, html2safehtml 
    mylumpofdodgyhtml # a lump of dodgy html ;-) 
    # Only allow <b>, <a>, <i>, <br>, and <p> tags 
    mylumpofcoolcleancollectedhtml = html2safehtml(mylumpofdodgyhtml,valid_tags=("b", "a", "i", "br", "p")) 
    # Don't process <img> tags, just strip them out. Use an indent of 4 spaces 
    # and a page that's 80 characters wide. 
    mylumpoftext = html2text(mylumpofcoolcleancollectedhtml,ignore_tags=("img",),indent_width=4,page_width=80) 

希望に役立ちます。

+2

攻撃者が素敵なタグを入れたと信じることはできません。 strip-o-gramが大量にエンコードされたタグで動作しない限り(rsnakeのリスト:http://ha.ckers.org/xss.htmlを参照)、これはうまくいきません。 – Mystic

+0

Miticは言った。 Strip-o-gram(男の子はあなたが孤独な友人を応援するために何かのように聞こえるのですが)のように見えますが、XSSに対する防御としては説明されていません。 –

8

WebフレームワークとJinja2のようなテンプレートエンジンを使用している場合、テンプレートエンジンまたはフレームワークにはそれ専用のものが組み込まれている可能性があります。

cgi.escape('malicious code here')

は、以下を参照してください: http://docs.python.org/library/cgi.html#cgi.escape

またJinja2のエスケープ提供:それを行いますhtmlタグを削除

from jinja2 import utils 
str(utils.escape('malicious code here')) 
+0

Python 3.4以降では、stdlibに 'html.escape'があります! –

関連する問題