[英]MySQL and PHP login security concerns
我已经潜伏在这里几个月了,不得不说这个社区动摇了!
所以,这是我的问题。 我正在为网站创建登录功能。 目前,这只是一个非常基础的论坛,我的目标是学习每个部分并从那里开始发展它们,而不是直接深入。
我的代码如下:
<?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为他们授予适当的权限而为其生成登录用户名和密码,但是我觉得这完全不切实际,并且随着站点的扩展本身存在安全风险。
将代码隐藏在另一个文件中并仅使用a可能有效,但是使用此方法是否会阻止用户浏览我的代码本身并仅查看基本的MySQL登录信息?
我知道PHP代码不会显示在网站的源代码中,除非未正确解析。 但是,我应该注意任何问题或解决方案吗?
再次感谢您的帮助! 我知道这是一堵文字墙。
将配置信息外部化为config.php
然后使用require_once('config.php');
在文件的顶部。
CHMOD(更改模式)将config.php文件更改为0644,以使其只能由拥有用户(服务器)执行或读取。
有了它,除非有人通过FTP或SSH访问您的设备,否则没人能看到您的MySQL连接信息(那时,您遇到了更大的问题)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.