slim框架中防止crsf攻击时,用到的函数hash_equals

 2023-09-05 阅读 121 评论 0

摘要:  1.防止crsf攻击的最多解决方案就是 为每个请求生成一个唯一 token ,验证来源于客户端 HTML 表单产生的 POST等请求 .    2.这个token默认放在session中.   slim框架源码中生成方式 如下: 1 <?php 2 //生

  1.防止crsf攻击的最多解决方案就是 为每个请求生成一个唯一 token ,验证来源于客户端 HTML 表单产生的 POST等请求 . 

  2.这个token默认放在session中.

  slim框架源码中生成方式 如下:

1 <?php
2 //生成name和token
3 $name =  uniqid($this->prefix);
4 $token =  bin2hex(random_bytes($this->strength)); //strength是一个大于16的数字
5 
6 $_SESSION['crsf'][$name] = $token;

  验证的时候,如果存在hash_equals函数,会优先这种方式

1  //通过$name获取到对应的值$token,  $value为表单提交获取的
2  if (function_exists('hash_equals')) {
3             //hash_equals如果不等返回false
4             $result = ($token !== false && hash_equals($token, $value));
5 } else {
6             $result = ($token !== false && $token === $value);
7 }

  至于为什么先用hash_equals的方案,有什么鸟用,表式不理解.

  查了下相关文档,和密码哈希比对安全有关, 具体可以 看 

  http://bobao.360.cn/learning/detail/398.html

  https://blog.whitehatsec.com/magic-hashes/

  文章里面大概就是说 如果用 双等号"=="比较密码哈希(十六进制有很小的几率会出现问题), 可以通过 hash_equals 或者  === 或者 !== 比较.

  

    

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/956.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息