当前位置:  开发笔记 > 编程语言 > 正文

PHP Session更安全还是SetCookie?

如何解决《PHPSession更安全还是SetCookie?》经验,为你挑选了1个好方法。

什么位更安全?

   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个.所以我想要会议?



1> Gumbo..:

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

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

这个问题是你混淆了识别(' 谁是用户? ')和授权(' 他/她能证明这是他/她吗? ').因为ID和电子邮件地址都用于识别,因为它们既是唯一的又是某种公共的(即,不仅仅是您所知道的),因此不符合认证资格.因此,也不要使用标识信息进行身份验证.

现在,如果您认为我只是将密码放在cookie中以满足身份验证方面,那么也不要这样做.因为存在攻击者可以读取cookie的内容(例如,跨站点脚本)并因此能够获得认证数据的攻击.

使用会话容器代替在服务器端存储敏感信息.但是对于会话,您仍然需要了解与会话相关的攻击,如会话劫持或会话固定.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有