Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么是好的、安全的会话名称? 背景_Php_Security_Session - Fatal编程技术网

Php 什么是好的、安全的会话名称? 背景

Php 什么是好的、安全的会话名称? 背景,php,security,session,Php,Security,Session,我已经做了几年php开发人员,但主要使用开源CMS,如wordpress或drupal。这两种方法都以各自的方式管理会话,而且在很大程度上我从未注意过它们。现在我正在建立一个没有使用这些cms的自定义网站,这意味着我需要自己管理会话。由于这有很多安全隐患,我想了解更多信息。我了解影响表单构建、url和一般输入的安全威胁,但很少了解会话威胁 我在chrome检查器中注意到我的会话cookie名为“PHPSESSIONID”。这当然有点恶心。因此,我发现我可以使用php.ini设置session.n

我已经做了几年php开发人员,但主要使用开源CMS,如wordpress或drupal。这两种方法都以各自的方式管理会话,而且在很大程度上我从未注意过它们。现在我正在建立一个没有使用这些cms的自定义网站,这意味着我需要自己管理会话。由于这有很多安全隐患,我想了解更多信息。我了解影响表单构建、url和一般输入的安全威胁,但很少了解会话威胁


我在chrome检查器中注意到我的会话cookie名为“PHPSESSIONID”。这当然有点恶心。因此,我发现我可以使用
php.ini
设置
session.name=“mysitename”
来更改它,或者在代码中使用一些值来更改它,例如
session\u name('mysite.'$some\u值)

这个问题。 我还应该设置什么会话名称?是否有此会话的web标准?我确实搜索了一个,但什么也没找到,也许我的关键词错了


设置此名称的安全含义是什么?由于可能存在冲突,我应该在名称中包含一些特定变量还是不包含变量。我真的从安全方面从头开始,所以任何信息都有帮助。

更改此名称不会产生很大影响,据我所知,您不需要太在意这一点。PHPSESSIONID是它的非正式名称,因此没有提供太多关于它的信息

防止会话滥用的一个更重要的部分是以任何形式使用令牌。如果你需要更多的信息,请告诉我

另一个非常重要的方面是可能的SQL注入攻击,由于您处理敏感信息,这可能会产生严重影响。为了防止这种情况,我建议使用预先准备好的语句,更多关于这一点

但是回到你的会话,在任何脚本开始的时候调用会话并进行一些测试是非常重要的,我将在下面告诉你我处理会话的方法(非常欢迎任何批评家)。这个会话应该设置一些标志,比如安全标志和仅http,更多关于php会话标志的信息

进一步的会话应该有一个有限的时间,并在该时间过期后自动丢弃。 另一个次要问题是每次新会话启动时都要重新生成会话id(值,而不是名称;)。只要在用户登录时调用它即可

我希望这有帮助,如果你还有任何问题,请随时提问

这是我的函数,在每个文件的开头调用,当然除了登录页面:

function auth()
{   
    $curFile = basename($_SERVER["PHP_SELF"]);
    if($curFile == "login.php")
    {
        return;
    }

    $domain = $_SERVER["HTTP_HOST"];

    if(session_status() != PHP_SESSION_ACTIVE)
    {   
        session_set_cookie_params(0, "/", $domain, true, true);
        session_start();
    }

    $now = time();
    if (isset($_SESSION["discard_after"]) && $now > $_SESSION["discard_after"])
    {
        session_unset();
        session_destroy();
        session_set_cookie_params(0, "/", $domain, true, true);
        session_start();
    }

    session_regenerate_id(true);

    $_SESSION["discard_after"] = $now + 120;

    if ((!isset($_SESSION["angemeldet"]) || !$_SESSION["angemeldet"]) && basename($_SERVER["PHP_SELF"]) != "login.php")
    {
        header("Location: https://".$domain."/login.php");
        die();
    }
}
在我的登录文件中,我将会话设置如下:

session_set_cookie_params(1800, "/", $domain, true, true);
session_start();
session_regenerate_id(true);
//Do whatever you want to do to your $_SESSION
$_SESSION["angemeldet"] = true;
$_SESSION["name"] = "Fany name";
//...

会话名称是不相关的。它们可以是“这是会话cookie”RDASDF@3234erasdfWe4r2343,或只是“php_sessid”。任何作为cookie名称有效的字符串都是有效的会话名称。选择一个,然后转到更重要的事情。据我所知,您担心有人会知道您的会话名称。你想隐瞒什么吗?您可以只删除php部分。我的意思是,如果你只有一块饼干,很明显这就是会话。我不知道s.o.是什么。我不想隐瞒任何事情。我只是想确保我的网站是安全的。它确实有一些敏感信息(主要是HIPAA)。我知道会话高劫持,中间人不知何故攻击目标会话cookie。我只是想确保我遵循安全系统的最佳实践。“这当然有点恶心。”当然?别管它。没有理由把事情复杂化。会话cookie的名称与安全无关。不过,从评论和回答来看,cookie的实际名称似乎无关紧要。很高兴知道。我可以专注于创建一个安全会话。我知道sql注入以及如何防止这种情况。“重新生成会话id”看起来很有用,因此我将对此进行更多研究。谢谢