サニタイズ


■概要 クエリストリングの取得のところで書いたソースに、サニタイズを追加する。
■詳細 「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>


戻る