首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php cookie防篡改

php cookie防篡改
EN

Stack Overflow用户
提问于 2014-11-30 23:59:23
回答 1查看 244关注 0票数 1

我在我的网站上使用以下代码:

代码语言:javascript
运行
复制
<?php
$pass = "61e7680d2ac47e5b9e3c82118fae6e3cfcddff285ac75bb82872bb01f24ac657";
function valCookie(){
    if (isset($_COOKIE['session'])){
        $cookie = json_decode(hex2bin($_COOKIE['session']), true);
        global $pass;
        $hash = hash('sha256', $_SERVER['REMOTE_ADDR'] . $cookie['uid'] . 
        $cookie['expiry'] . $pass);
        $uid = $cookie['uid'];
        if ((hash_unique($hash, $cookie['hash'])) && ($cookie['expiry'] > time())){
            return $uid; //return user id.
            }
        }
    }
function hashCookie($uid, $expiry){
    global $pass;
    $cookie['uid'] = $uid;
    $cookie['expiry'] = $expiry;
    $cookie['hash'] = hash('sha256', $_SERVER['REMOTE_ADDR'] . $cookie['uid'] . 
    $cookie['expiry'] . $pass);
    $hexCookie = bin2hex(json_encode($cookie));
    setcookie("session", $hexCookie, $expiry);
    if(strlen($uid)){
        return true;
        }
    }
?>

用它来防篡改我的cookies安全吗?我在散列中包含了使cookie过期的时间。这是一种安全的方式吗?

EN

回答 1

Stack Overflow用户

发布于 2018-10-04 13:43:01

对于roll your own crypto来说,这通常不是一个好主意。

用它来防篡改我的cookies安全吗?我在散列中包含了使cookie过期的时间。这是一种安全的方式吗?

不,你使用的是一个SHA256散列值,攻击者可以很大程度上提供它,而不是HMAC-SHA256。没有HMAC,SHA256很容易受到length-extension attacks的攻击。

相反,请考虑(按优先顺序):

  1. PASETO,,提供高安全裕度的防篡改令牌。唯一的缺点是,它们不能幸免于使用HS256重播attacks.
  2. JWT,。链接库将允许您安全地仅允许HS256,从而绕过99.9%的JWT security fails.
  3. Halite's Cookie class.Halite是library的易用性包装器,library是一个现代密码库,现在随PHP7.2一起提供。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27215121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档