繁体   English   中英

MySQL和PHP登录安全性问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM