我在 web.py utils.safeunicode 函数上发现了一个错误。版本是 0.36
>>> import web
>>> app=web.application(('/hello','hello'),locals())
>>> class hello:
... def GET(self):
... return 'hello world'
#it's the normal request
>>> app.request('/hello').data
'hello world'
#the Error request
>>> app.request('hello\xbf').data
...
UnicodeDecodeError: 'utf8' codec can't decode byte 0xbf in position 6: unexpected code byte
我在一些 web.py 网站上尝试过,比如“http://web.site/index%bf”,它们都响应状态为 500 或异常。那是错误还是漏洞?
我修复了 utils.py 第 342 行
elif t is str:
ooxxxxoo=obj.decode(encoding,'ignore')
return ooxxxxoo
然后一切顺利。但是真的有安全吗?