最好的方法密码保护页面


Best Method Password Protected Pages

所以我在帮一个体育联盟的忙,我已经把一个相当专业的网站放在一起了。

我设置了这个,这样联盟的人就可以发布新闻,更新天梯,赛程等等。

然而,我不确定实现登录区来保护这些允许用户上传文件/修改mysql表数据的页面的最佳方式。一个简单的谷歌搜索给了我太多的选择来筛选,以确定什么是合适的,什么是当前的,许多结果是多年前的。

我不需要为我写的代码,我只需要一个想法,什么是最好的做法,在一个简单的登录,保护5或6页可能3或4个不同的用户/通过组合的时刻。服务器运行PHP5.4,并有许多linux托管的MySQL数据库可用。

我的问题是,我应该使用哈希吗?哪一个?MD5吗?那现在一定很老了。会话吗?. htaccess吗?2014年朝一个好的方向发展将是非常棒的。请记住,任何人恶意攻击本网站的机会是非常低的,数据丢失的成本将不存在。

我建议使用类似于以下样式的密码加密:

$[password_var] = base64_encode(pack('H*',sha1($[password_var])));

您还需要确保您保护自己免受SQL注入,最佳实践采用PDO -快速阅读可以在这里找到tutsplus。

SHA-2和Blowfish是很好的加密方法。最重要的是,加密到Blowfish或SHA-2是相当慢的,这使得暴力破解需要很多时间。

河豚的例子:

//Generating salt, must be 22 characters or more for blowfish. You can make a function for this.
$some_str = md5(uniqid(mt_rand(), true));
$base_64str = base64_encode($some_str);
$modified_base64 = str_replace('+', '.', $base_64str);
$salt = substr($modified_base64, 0, 22);
//Format String i.e. which method we will be using and how many times the password will be encrypted.
$format_str = "$2y$10$"; // 2y for Blowfish and 10 times.
$fs = $format_str . $salt;
$hased_pass = crypt($password, $fs);