MySQL和PHP登录安全问题



我已经潜伏在这里几个月了,不得不说这个社区太棒了!

所以,这是我的问题。我正在为一个网站创建一个登录功能。在这一点上,这只是一个非常基本的论坛,我的目标是学习每一篇文章,并从中成长,而不是直接深入到底。

我的代码如下:

<?php
$username = "temp_name";
$password = "temp_pass";
$hostname = "temp_host";
$db_name = "temp_dbase";
$tbl_name = "temp_tbl";
$login_uname = $_POST['username'];
$login_upass = $_POST['password'];
$salt1 = "temp_salt1";
$salt2 = "temp_salt2";
mysql_connect("$hostname", "$username", "$password")or die("Unable to connect to server);
mysql_select_db("$db_name")or die("Cannot access database.");
$user = mysql_query("SELECT username, password FROM $tbl_name WHERE username = '$login_uname');
$userexist = mysql_num_rows($user);
if($userexists == 0) {
die("Invalid login information.");
}
$userinfo = mysql_fetch_array($user);
$checkpass = md5($login_upass);
$checkpass = $salt1 . $checkpass . $salt2;
if(($userinfo['username'] == $login_uname) && ($userinfo['password'] == $checkpass)) {
setcookie('username', "$login_uname", time()+60*60*24*7);
setcookie('password', "$login_upass", time()+60*60*24*7);
}
else
die("Invalid login information.");
?>

现在,代码工作正常,没有问题。我了解散列和盐析密码的基本知识(我知道md5并不理想,但目前它只是一个学习工具。)我真正关心的是:

我的代码中有我的MySQL登录信息!我考虑过让用户注册用户名和密码,然后让MySQL为他们自己生成登录用户名和密码以授予适当的权限,但我觉得这完全不切实际,而且随着网站的扩展,这本身就存在安全风险。

将代码隐藏在另一个文件中并只使用可能有效,但使用这种方法是否会阻止用户浏览我的代码本身并只查看MySQL的基本登录信息?

我知道PHP代码不会显示在网站的源代码中,除非它没有被正确解析。但是,我应该知道有什么问题或解决方案吗?

再次感谢您的帮助!我知道这是一堵文字墙。

将配置信息外部化为类似config.php的内容,然后在文件顶部使用require_once('config.php');

CHMOD(更改模式)将config.php文件更改为0644,以便除拥有该文件的用户(服务器)外无法执行或读取该文件。

有了这个,没有人能够看到你的MySQL连接信息,除非他们可以通过FTP或SSH访问你的盒子(在这一点上,你有更大的问题)

最新更新