为何不支持包含 “&” 符号的密码!?

最近很奇怪,因为最近接连在不少网站注册账号,但莫名其妙地注册失败了。究其原因,竟然与密码中出现的逻辑与符号(ampersand) “&” 有关。这令我非常惊讶。这其中竟然包括百度和臭名昭著的 12306,而且出错的提示都很奇怪,其中 12306 提示密码中必须包含大写字母、小写字母和特殊符号中的两种或以上,百度没有提示,只是将密码一栏标记为红色。

谷歌一下,发现相关的问题已经出现过很多。由于 & 符号常常被各种系统作为保留字符,被赋予了特殊的含义,而想要表示字面上的 & 符号,则需要经过转义才行。比如在 HTML 和 XML 中,需要将 & 写成 HTML 实体的形式 &。类似的,在 SQL 中,& 符号会被用来提示输入,也需要转义才能表达原意。

答复2楼评论:不论是 GET 还是 POST,都可以任意字符进行编码,例如使用 x-www-form-urlencoded 就会将 & 编码为 %26

2 thoughts on “为何不支持包含 “&” 符号的密码!?

  1. 保留字符一般都会被处理。

  2. 无论是get还是post传递参数时,&都会被截断,而密码又不能进行编码处理,否则你的密码就变成了&

Leave a Reply

Your email address will not be published. Required fields are marked *