我正在为我镇上的本地商家创建一个目录。我允许每个企业在网站上创建个人资料,以便他们上传联系信息,照片,他们在Google地图上的位置等。
我对php有很好的了解,但我不会接近行业标准。
我只是在寻找有关验证管理页面上是否已登录业务的建议。我现在的方式是,当他们的用户名和密码被验证后,我为他们创建了一个会话:
$_SESSION['session_businessid']
这基本上只是一个会话,其业务ID位于mySQL数据库中的business表中。
然后在每个需要登录业务的页面上,我包含一个名为verify_logged_in.php的php文件,其中包含以下代码:
<?php
session_start();
if ($_SESSION['session_businessid'])
{
$BusinessID = $_SESSION['session_businessid'];
}
else
header ("location: /admin/login.php");
?>
我只是想知道这种方法有多安全/不安全,有没有更好的方法呢?
答案 0 :(得分:0)
这不够安全,因为您在默认的php会话中存储会话变量。您必须使用安全会话以保护被会话劫持,XSS攻击等被黑客入侵或滥用的信息。您可以使用以下链接指导您如何创建安全的PHP会话 - Create-a-Secure-Session-Managment-System-in-Php-and-Mysql
或者,如果您想要一个更简单但安全性更低的会话,那么您可以使用以下代码:
sessions.php:
function sec_session_start() {
$session_name = 'sec_session_id'; // Set a custom session name
$secure = false; // Set to true if using https.
$httponly = true; // This stops javascript being able to access the session id.
ini_set('session.use_only_cookies', 1); // Forces sessions to only use cookies.
$cookieParams = session_get_cookie_params(); // Gets current cookies params.
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
session_name($session_name); // Sets the session name to the one set above.
session_start(); // Start the php session
session_regenerate_id(); // regenerated the session, delete the old one.
anypage.php:
include 'sessions.php';
sec_session_start();
//rest of the code.
此外,您用于登录的方法将对存储的商家信息的安全性产生影响。