标签:encryption hyperlink md5 url php
我想知道是否使用substr(md5(rand()),0,17);密码重置链接足够安全吗?如果我要生成一个更长的字符串,那会使它更安全吗? MD5绝对安全吗?还是我应该做$token = sha1(uniqid($username,true));?
解决方法:
substr()或md5()的使用仅次于rand()的使用.
使用密码重置令牌的全部要点是它们不可预测,并且由于底层的LCG模型,已知rand()较弱.
最好使用系统的熵源,例如:
$rand = openssl_random_pseudo_bytes(8); // take 8 random bytes
$token = substr(md5($rand), 0, 17);
它从系统的随机源中获取字节,例如Linux上的/ dev / urandom或Windows上的相应系统.
请注意,如果没有任何特定的大小限制,则最好选择完整的sha1()输出并采用16个随机字节.
另外,在将密码重置令牌存储在数据库中时,应将其视为(临时的,有时间限制的)密码.我建议将上述令牌发送给用户,然后在将它们写入数据库之前使用password_hash()
.在以后的阶段中,您可以使用password_verify()检查给定的令牌(假设令牌没有过期).
标签:encryption,hyperlink,md5,url,php 来源: https://codeday.me/bug/20191121/2052756.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。