这有点出乎意料,而且主要是好奇心。我希望这不是浪费时间和空间。 我正在编写一个小脚本来验证带有链接的帐户,所以我决定发送一个带有php脚本链接的电子邮件,在链接中我会放两个变量来获取_GET数组。一把钥匙和电子邮件。然后,我只需用该电子邮件和密钥搜索数据库,并将其激活状态更改为true ...没有概率。即使它可能不是很优雅也很容易..
我使用了一个脚本来生成我在网站其他地方使用的密钥来生成一个新密码(例如重置它)但有时它不起作用,经过大量的尝试我注意到了(和我感到愚蠢然后我的密码生成函数的数组来自:
'0123456789 _ @#$%&安培;!*() - = + abcdfghjkmnpqrstvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
很自然地,我删除了&用于在url中分隔变量的字符...然后在另一次尝试中,我注意到电子邮件中的链接未被识别为整个并且在'#'字符后停止,我记得它用于html中的引用所以我也删除了它。最后我决定只留下字母数字字符,但我很好奇;对于使用_GET的url而言,是否还有任何“有效”的字符,并且无论如何都有任何方法可以使用这些字符(可能是编码或somwething)
答案 0 :(得分:2)
有很多字符无效。使用urlencode
将其转换为网址安全编码。 (始终在您插入URL的任何数据上运行该功能)。
答案 1 :(得分:0)
在将值发送到urlencode()
之前,您必须先使用$_GET
。
答案 2 :(得分:0)
您可以使用url_encode
和url_decode
,但我会远离& # ?
这些正常的网址字符。
此外,在密码问题上:不要强调算法,请使用sha1
crypt
或其他内容salt
。这些算法将比你自制的算法强大得多。