我几个月来一直潜伏在这里,不得不说这个社区摇滚!
所以,这是我的问题。我正在为网站创建登录功能。在这一点上,这只是一个非常基本的论坛,我的目标是学习每一件作品并从那里成长,而不是潜入深渊。
我的代码如下:
<?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代码不会显示在网站的源代码中,除非它没有正确解析。但是,我应该注意哪些问题或解决方案?
再次感谢您的帮助!我知道这是一面文字。
答案 0 :(得分:3)
将配置信息外部化为config.php
,然后使用文件顶部的require_once('config.php');
。
CHMOD(更改模式)将config.php文件更改为0644,以便除了拥有用户(服务器)之外不能执行或读取它。
有了这个,没有人能够看到你的MySQL连接信息,除非他们有你的盒子的FTP或SSH访问(此时,你有更大的问题)