当前位置: 首页 > 知识库问答 >
问题:

我的验证用户是否已登录的方法有多安全?

翟冯浩
2023-03-14

我正在为我的城镇里的当地企业创建一个目录。我允许每个企业在网站上创建一个个人资料,他们可以上传联系信息,照片,他们在谷歌地图上的位置,等等。

我对php有很好的了解,但我还没有达到行业标准。

我只是在寻找一些建议,以验证业务是登录在管理页面。我现在的方法是,当他们的用户名和密码被验证后,我为他们创建一个会话:

$_SESSION['session_businessid']

这基本上只是一个使用他们的业务ID的会话,该会话取自mySQL数据库中的Businesss表。

然后,在需要登录业务的每个页面上,我包含一个名为verify_logged_in.php的php文件,其中包含以下代码:

<?php
session_start();

if ($_SESSION['session_businessid'])
{
    $BusinessID = $_SESSION['session_businessid'];
}
else
    header ("location: /admin/login.php");
?>

我只是想知道这种方法有多安全/多不安全,是否有更好的方法?

共有1个答案

陶英达
2023-03-14

这不够安全,因为您将会话变量存储在默认php会话中。您必须使用安全会话来保护被会话劫持、XSS攻击等攻击或滥用的信息。您可以使用以下链接来指导您如何创建安全的php会话-create-a-secree-session-management-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.

此外,您使用的登录方法将对企业存储信息的安全性产生影响。

 类似资料:
  • 本文向大家介绍java 验证用户是否已经登录与实现自动登录方法详解,包括了java 验证用户是否已经登录与实现自动登录方法详解的使用技巧和注意事项,需要的朋友参考一下 验证用户是否已经登录 配置到web.xml中且对jsps/*进行过虑: 实现自动登录 自动登录,是为了帮助用户多次使用这个网页时,不用再次输入用户名和密码就可以登录。 是指用户将用户的登录信息,人,保存到本地的文件中Cookie中。

  • 接口说明 验证是否登录 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /authcenter/api/login/v1.0.0/refreshPermissions 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN 响应字段说明 无 响应成功示

  • 接口说明 验证是否登录 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /authcenter/api/login/v1.0.0/refre

  • 问题内容: 我需要进行以下测试,以验证是否已调用Person类的所有getter。到目前为止,我已经使用了Mockito的verify()来确保每个getter都被调用。有没有办法通过反思做到这一点?可能是将新的吸气剂添加到Person类的情况,但是测试会错过这一点。 问题答案: 通常,不要嘲笑被测类。如果您的测试是针对Person的,则您永远都不会看到它,因为这很明显地表明您正在测试模拟框架而不

  • 问题内容: 我想使用jQuery.validate验证数据库中是否存在用户名,所以这是我到目前为止的内容: jQuery的: check-username.php: 此代码始终显示一个错误,即使没有使用用户名也是如此。 我正在使用jQuery Mobile 1.9.1 提前致谢。 问题答案: 通过更改我使用的PHP技术,我设法使它起作用,这是我的PHP: 谢谢大家在这里的帮助:)

  • 如何检查用户是否在公共页面上的Keycloak中进行了身份验证,而不需要用户导航到某个受保护的页面或之前的登录页面?