【发布时间】:2019-01-18 21:07:35
【问题描述】:
我正在尝试创建网站的密码保护区域。 我想通过检查 MySql 表中的用户名和密码来允许访问,然后启动一个会话并允许在会话处于活动状态时访问多个页面。如果有人试图直接访问这些页面之一,我想将他们重定向到登录页面。
我的登录页面代码是:
if (isset($_POST['submit']))
{
include("config.php");
session_start();
$username=$_POST['username'];
$password=$_POST['password'];
$passwordc=md5($password);
$query = "SELECT username FROM admin WHERE username='$username' AND password='$passwordc'";
$result2 = $conn->query($query);
if ($result2->num_rows != 0) {
$_SESSION["username"] = $user;
echo "<script language='javascript' type='text/javascript'> location.href='admin_view.php' </script>";
}else{
echo "<script type='text/javascript'>alert('User Name Or Password Invalid!')</script>";
}
}
它似乎有效(如果用户名和密码匹配,则正确重定向,如果不匹配则显示警报)。 我没有做的,实际上是在会话未激活时保护我的页面不被显示。
session_start();
if (!$_SESSION["username"]) {
header("Location: login.php");
}
我不是程序员,也不是受过良好教育的网络开发人员。我知道 HTML 和 CSS,我几乎无法使用自述文件之后的现成 php 和 js 脚本。 任何帮助将不胜感激。
【问题讨论】:
-
MD5 不够好。在
passwird_hash中使用构建 -
您的代码易受 SQL 注入攻击。使用准备好的语句
-
我想用密码保护的页面即使直接访问也会显示(无需先通过登录页面)
-
请不要自己滚动密码散列,特别是不要使用 MD5() 或 SHA1()。 PHP 提供
password_hash()和password_verify()请使用它们。这里有一些good ideas about passwords如果你使用的是5.5之前的PHP版本there is a compatibility pack available here -
@Dharman:谢谢,但 atm 安全不是我的主要问题。一旦我能够在用户未登录的情况下真正阻止页面,我将努力提高安全性。