Pythonにおけるホワイトリスト形式のhtmlエスケープ 2015年3月16日


 

Pythonでもホワイトリスト形式のエスケープがしたい.
今回用いたのは以下のライブラリ

Python2系, 3系のどちらにも対応している.

導入

$ pip install bleach

使用方法等

テストコード

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import bleach

TAG = ['img']
ATTR = {'img':['src']}

test1 = '<a href="http://ytn86.net">here</a>'
test2 = '<a href="javascript:alert(1)">here</a>'
test3 = '<img src="x" onerror=alert(1) >'

print('# test1')
print(bleach.clean(test1) + 'n')

print('# test2')
print(bleach.clean(test2) + 'n')

print('# test3 - not specify tag and attribute')
print(bleach.clean(test3) + 'n')

print('# text3 - specify tag and attribute')
print(bleach.clean(test3, tags=TAG, attributes=ATTR))

実行結果

# test1
<a href="http://ytn86.net">here</a>

# test2
<a>here</a>

# test3 - not specify tags and attributes
&lt;img src="x" onerror="alert(1)" "=""&gt;

# text3 - specify tag and attribute
<img src="x">

その他

世の中からXSSはやく消えてくれたのむ

 

Leave a Reply