标签:网站 输入 字符 研究 hash .com ash input 解决
使用web.py的时候,web.input()和web.data() 遇到特殊字符,处理方式就会出现差异。
web.input() 可以处理get和post方式传递的输入,对于特殊字符不会自动转码,hashlib.md5等函数如何处理还需要再研究。
web.data() 仅可以传递post方式传递的输入,对于特殊字符会自动转码, hashlib.md5等函数也就可以完美准确地处理了。
例如:
用户输入了test@test.com,使用web.input 接收到的就是test@test.com,而使用web.data接收到的就是test%40test.com,如果混用这两种方式,而且不做额外的编码和解码,就会出现信息不一致的情况。
我做项目的时候,注册的时候接收用户的输入,使用web.input 接收用户的输入,登陆的时候使用web.data接收用户的输入。结果是:只要用户的密码中包含了特殊字符,就会出现无法登陆的情况。
解决方案是:将注册环节接收用户输入的方式也改为web.data,一方面注册和登陆的接收方式一致了,一方面由于web.data方式会对特殊字符进行转码,避免了大部分潜在的问题!
补充:http://webpy.org/ web.py的官方网站。
标签:网站 输入 字符 研究 hash .com ash input 解决
原文地址:https://www.cnblogs.com/lihuanhuan/p/10663801.html