我正在使用Adam Griffiths的CodeIgniter身份验证库,我正在调整用户模型.
我遇到了他用来生成令牌的生成函数.
他首选的方法是引用random.org的值,但我认为这是多余的.我正在使用他的后退方法随机生成一个20个字符长的字符串:
$length = 20;
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$token = '';
for ($i = 0; $i < $length; $i++) {
$token .= $characters[mt_rand(0, strlen($characters)-1)];
}
Run Code Online (Sandbox Code Playgroud)
然后他使用盐哈希这个令牌(我正在梳理来自不同功能的代码)
sha1($this->CI->config->item('encryption_key').$str);
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何理由通过盐渍哈希运行令牌?
我已经读过,只是随机生成字符串是一种天真的方式来制作随机密码但是sh1哈希和盐是必要的吗?
注意:我从https://www.grc.com/passwords.htm获取了我的encryption_key (63随机字母数字)
我不敢相信任何人通常都会反对文档和评论,但是在PHP中这样做的最佳实践(和实际)是什么?
在JavaScript中,您可以记录代码,然后运行最小化器以生成代码的生产版本以供使用.在PHP中,额外的文本行会影响性能吗?您是否应该将文档保存在另一个文件中(我认为这可能对API和框架很重要,但会降低您的开发速度)?
编辑:
我的逻辑是它必然需要更长的时间,因为文件大小更长并且为解析器添加更多工作(尽管可能可以忽略不计).假设你有1000行代码和500行注释,你应该把汇总版本改为直接到实际的文档页面吗?
如何在设置实体后测试NDB中未设置的重复属性?
我能找到的唯一参考说:
在重复属性上查询None值具有未定义的行为; 不要那样做.