是PHP Session更安全还是SetCookie更安全?


Is PHP Session more secure or SetCookie?

哪位更安全?

   function login_customer($customer_details) {
    //Set a cookie to login the customer
    setcookie("Str_CUST_LOGIN", 1, time()+3600);
    setcookie("Str_CUST_EMAIL", $customer_details['customers_email']);
    setcookie("Str_CUST_ID", $customer_details['customers_id']);
    //Update the cart
    return true;
}

或者下面是这个。该脚本使用IF ELSE语句。旧客户端的噩梦应用

   function login_customer($customer_details) {
    //Set a cookie to login the customer    
    $str_HA_CUST_LOGIN="1";
    // the customer details var gets info from a mysql escape form
    // so mysql /xss is stopped
    $str_HA_CUST_EMAIL=$customer_details['customers_email'];
    $str_HA_CUST_ID=$customer_details['customers_id'];
    $_SESSION["loggedIn"]=$str_HA_CUST_LOGIN;
    $_SESSION["userEmail"]=$str_HA_CUST_EMAIL;
    $_SESSION["userID"]=$str_HA_CUST_ID;
    return true;
}

我正在努力改进它并锁定会话。我还没有做任何基于Salt, MD5的会话字符串,因为我正在考虑一个数据库会话-这里唯一的问题是MySQL是如此过载,我们不得不在云服务器上做一个主和集群负载平衡器。在安静的日子里,平均每秒有200多个订单。所以我需要治疗??

cookie很容易被客户端伪造和篡改。因此,如果攻击者知道应用程序期望的cookie,他/她可以伪造cookie或随意更改cookie值。

在您的情况下,可能仅根据客户ID(和/或电子邮件地址)的知识就可以作为任意客户进行身份验证。

这样做的问题是你混淆了身份("谁是用户?")和授权("他/她能证明这真的是他/她吗?")。因为ID和电子邮件地址都用于标识,因为它们都是唯一的,并且是某种公开的(即不只是您知道),因此不具备身份验证的资格。因此,不要将身份信息也用于身份验证。

如果你认为我只需要把密码放在cookie中就可以完成身份验证,那也不要这样做。因为在某些攻击中,攻击者可以读取cookie的内容(例如跨站脚本),从而能够获得身份验证数据。

使用会话容器在服务器端存储合理的信息。但是对于会话,您仍然需要注意会话相关的攻击,如会话劫持或会话固定。

每次对页面的请求都通过网络发送cookie和它们的数据。如果你在cookie中嵌入了对网站至关重要的数据,当页面请求"在飞行中"时,破坏/窃取这些数据将是微不足道的。

相比之下,会话将所有数据存储在服务器上。客户机和服务器之间唯一的通信是会话的ID令牌。窃取会话令牌允许攻击者冒充受害者的身份,但他们不会获得比用户已经拥有的更多的能力。

。如果您发送的cookie是has_super_user_powers=false,那么当有人将cookie更改为true时,请不要感到惊讶。将该标志保存在会话中使远程用户无法更改它,因为该值从一开始就不会离开您的服务器。

两者都可以被窃取,但cookie的值可以被读取。会话可以包含更多信息。

两者都同样安全,但要正确使用cookie,您需要多花一点时间。

如果你刚开始使用会话管理,就使用会话。

编辑——

实际上,从技术上讲,cookie比会话更安全。由于会话是基于cookie的,所以它们只能和cookie一样安全,而且几乎总是比cookie更不安全。然而,除非你有一个非常好的实现,否则会话对你来说会更安全。

取决于您在这些cookie中存储的信息类型。但总的来说,会话比cookie更安全。因为cookie驻留在客户端机器上,而会话在您的服务器上。

如果您的服务器已经过载,最好不要使用基于数据库的会话。要么使用基于文件的会话(PHP的默认值),要么您想要存储的数据无关紧要,请放心使用cookie。