サニタイズ
■概要
クエリストリングの取得のところで書いたソースに、サニタイズを追加する。
■詳細
「cgi.escape」を使ってサニタイズ。
それだけだとシングルコートが変換されないので、自前の置換も追加。
■ソース
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cgi
import os
import sys
import codecs
import re
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)
print ('Content-type: text/html; charset=UTF-8')
print ("\r\n\r\n")
form = cgi.FieldStorage()
key = ""
if ( form.has_key("key") ):
key = form["key"].value
#cgi.escapeした文字列に、シングルコート→'置換を追加
#cgi.escapeの2つ目の引数は、ダブルコートを置換するかどうか
print re.sub( "'", "'", cgi.escape(key, 1));
■実行
パラメータを
?key=%3Cscript%3Ealert(%22test%22)%3C/script%3E
で実行
■結果
<script>alert("test")</script>
戻る