IEでjsonにやられた

まあIEですから。jsonのレスポンスでタグをエスケープしてないとIEXSSできてしまうという話。

{test: "<html><script>alert(document.cookie)</script></html>"}

こんな感じのレスポンスを返すページをIEで読ませる。

test.py

#!/usr/bin/env python
from wsgiref.simple_server import make_server

def app(environ, start_response):
    start_response("200 OK", [('Content-Type','text/plain')])
    return ["{test: \"<html><script>alert(document.cookie)</script></html>\"}"]

if __name__ == '__main__':
    httpd = make_server('', 8080, app)
    httpd.serve_forever()

IE6でlocalhost:8080にアクセス。Content-Type:text/plainとか指定してもスクリプトが走ってます。怖い怖い。