Php 适当地验证会话

Php 适当地验证会话,php,session,authentication,redirect,Php,Session,Authentication,Redirect,我正在试验会话 我试图让它成为一个安全的会话,我让用户只有在通过salt和hash验证了会话变量后,才会收到等于5的会话变量“signin” if($passwordhash == $tablehash) { session_start(); $_SESSION['signin'] = 5; header("Location: /~cssgf3/cs3380/lab7/home.php"); 然后我有一个页面,它

我正在试验会话

我试图让它成为一个安全的会话,我让用户只有在通过salt和hash验证了会话变量后,才会收到等于5的会话变量“signin”

 if($passwordhash == $tablehash)
    {
            session_start();
            $_SESSION['signin'] = 5;
            header("Location: /~cssgf3/cs3380/lab7/home.php");
然后我有一个页面,它通过这个步骤被重定向到被验证的页面:

session_start();

$sessionValue = 5;//$_SESSION['sessionValue'];
$userSession = $_SESSION['signin'];

if($userSession == $sessionValue)
{

我很好奇这是否是验证会话的适当方法。在这一点上,我并不太担心安全性,但我感兴趣的是这是否是安全的,如果不是的话,是否有一种简单的方法来修复它?

广义上说,是的,但如果不了解更多的代码,就很难说了


您最好为用户指定一个唯一的值,而不是
INT
值5。

广义地说,是的,但是如果不了解更多的代码,就很难说了


您最好为用户指定一个唯一的值,而不是
INT
值5。

非常广泛的问题。简单地说,是的,这是通常的方法。 通常是像下面这样的事情需要确保安全

  • 您的代码SQL注入安全吗?有人能绕过登录吗
  • 有人能使用暴力攻击吗
  • 你的代码XSS安全吗
  • 你的代码CSRF安全吗
  • 会话cookie是否安全存储?您需要仅使用HTTPS还是安全属性
  • 对彩虹桌攻击安全吗?您在存储密码时是否使用salt
  • 这个列表还可以继续,当然这取决于所需的安全级别

    此外,如果页面是特定于用户的,则还需要验证是否可以对给定对象执行每个操作。例如,如果是订单,订单是否由当前登录用户拥有,而不仅仅是用户登录时


    希望这有帮助。

    这是一个非常广泛的问题。简单地说,是的,这是通常的方法。 通常是像下面这样的事情需要确保安全

  • 您的代码SQL注入安全吗?有人能绕过登录吗
  • 有人能使用暴力攻击吗
  • 你的代码XSS安全吗
  • 你的代码CSRF安全吗
  • 会话cookie是否安全存储?您需要仅使用HTTPS还是安全属性
  • 对彩虹桌攻击安全吗?您在存储密码时是否使用salt
  • 这个列表还可以继续,当然这取决于所需的安全级别

    此外,如果页面是特定于用户的,则还需要验证是否可以对给定对象执行每个操作。例如,如果是订单,订单是否由当前登录用户拥有,而不仅仅是用户登录时


    希望这能有所帮助。

    通过盐析和散列进行验证是任何类型的安全性都可能发生的地方,但实际上您应该
    将用户会话设置为用户特定的值,该值将在每次登录时更改
    在每次页面加载时验证这些会话/DB值,在任何其他执行之前
    更多的代码将有助于完全回答这个问题,但我对这个老问题的回答在总体上可能是有用的-一件我没有看到的简单事情,使用
    session\u regenerate\u id()
    在登录后对用户进行身份验证以避免会话固定攻击-有一个详细的解释。您的代码很好,但有点长。为什么不直接比较
    if($\u SESSION['signin']==5)
    。对我来说似乎更简单。我应该补充一点,明确一点,不要依赖一般会话或cookie值(如5或true),让它具有用户特定性通过盐析和哈希进行验证是任何安全性都会发生的地方,但实际上,您应该
    将用户会话设置为一个特定于用户的值,该值将在每次登录时更改
    在每次页面加载时验证这些会话/DB值,然后再执行任何其他操作
    更多的代码将有助于完全回答问题,但我对这个老问题的回答通常可能很有用-一件简单的事情我没有看到,在登录后使用
    session\u regenate\u id()
    对用户进行身份验证以避免会话固定攻击-有一个详细的解释。虽然代码有点长,但代码还可以。为什么不直接比较
    if($\u SESSION['signin']==5)
    。对我来说似乎更直截了当。我应该补充清楚,不要依赖一般会话或cookie值,如5或true,使其特定于用户