[英]Secure Login PHP CodeIgniter
我正在使用简单的登录类作为起点来构建CodeIgniter应用程序的登录部分。 一切正常,但是我不确定加密类型和使用哪种加密之间的差异。
我已经将crypt()函数与用户的密码一起使用了(通过md5),就像这样:
$pass == crypt($_POST['login_password'], md5($_POST['login_password']))
这种方法可行吗,还是该方法存在明显错误? 由于密码或盐都未存储在数据库中,因此这似乎很安全。 还是有点明显?
提前致谢。
http://php.net/manual/en/faq.passwords.php
这是实现密码的正确方法。
以下所有内容均无关紧要。
有了您所拥有的,一个简单的
$pass = md5($_POST['login_password'] . "somerandomchars");
除非需要高度的安全性,否则在大多数情况下就足够了。
如果您使用的是CodeIgniter,我强烈建议您查看TankAuth身份验证插件。
codeigniter还提供了内置的加密库。 您在配置文件(application / config / config.php)中提供“盐” $ config ['encryption_key']
即使可以“解密”,它也很安全:
$this->load->library('encrypt');
//encryption
$pass = $this->encrypt->encode($this->input->post('login_password'));
使用$pass = do_hash($this->input->post('password'));
并将security_helper包含到您的autoload.php中
在现代应用程序中,网站密码不使用crypt来存储。 使用带有盐的哈希值要安全得多(如果有人闯入您的数据库,则没有密码。只有密码的哈希值是他们不能用来登录的密码),并且crypt确实不是很安全。 不幸的是MD5也有问题,所以我建议使用SHA512作为哈希。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.