[web 安全] php随机数安全问题
and() 和 mt_rand() 产生随机数
srand() 和 mt_srand() 播种随机数种子(seed)
使用:
<?php srand(123);//播种随机数种子 for($i=0; $i<5; $i++){ echo rand()."\n";//产生随机数 } ?>
随机数种子一样,随机数序列则会完全一相同。
所以知道随机数种子后,就能知道所有随机数序列。(随机数种子 => 随机数序列)
知道随机数后,也能推出随机数种子。(随机数 => 随机数种子 => 随机数序列)
<?php/* 通过随机数反推随机数种子 */ srand(123); $_rand = rand(); echo "rand:{$_rand}\n"; $max = mt_getrandmax(); for ($i=0; $i < $max; $i++) { srand($i);if(rand() == $_rand){echo "rand seed:{$i}\n";break;} } ?>
《白帽子讲 web 安全》:
在 php 5.2.1 及其之后的版本中调整了随机数的生成算法,但强度未变,因此在猜解种子时应在对应的php版本中进行。
在 Stefan Esser 的文中还提到一个小技巧,可以通过发送 Keep-Alive HTTP头,迫使服务器端使用同一PHP进程相应请求,而在该PHP进程中,
随机数在使用时只会在一开始播种一次。
《聊一聊随机数安全》:
int rand(void)
int rand(int $min, int $max)
如果没有提供参数min,max,rand()返回0到getrandmax()之间的伪随机整数,但是getrandmax()在window下返回32767,也就是window下rand()的范围是0到32767
mt_rand()对应的是mt_getrandmax(),返回2147483647。安全建议:
1、业务场景需要使用随机数,一定要使用随机数,比如Token的生成。
2、随机数要足够长,避免暴力破解。
3、保证不同用处的随机数使用不同的种子,避免通过随机数推出随机数种子,从而得到随机数序列。
4、对安全性要求高的随机数(如密码技术相关)禁止使用弱伪随机数(mt_rand()比rand()强)。
4.1 不要使用时间函数作为随机数。
4.2 不要使用弱伪随机数生成器(rand()范围小;mt_rand()存在缺陷)。5、强伪随机数
转载于:https://www.cnblogs.com/natian-ws/p/7641093.html
[web 安全] php随机数安全问题相关推荐
- Web笔记-session盗用安全问题(Spring Boot获取所有session及提高安全性)
此处本人的过滤代码如下: 仅仅是判断了这个session有没有被记录,有没有attribute! 某些IT论坛,就是这样的,通过session,就可以进行批量帐号操作,发取http协议. 这里演示如下 ...
- web渗透之jwt 安全问题
前言 JWT 全称 JSON Web Token,是一种标准化格式,用于在系统之间发送加密签名的 JSON 数据.原始的 Token 只是一个 uuid,没有任何意义. JWT 包含了部分业务信息,减 ...
- 单点登录与权限管理本质:cookie安全问题
继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,前一篇文章介绍了单点登录概念,以CAS协议的基本流程为例讲解了系统间的交互过程,过程中,cookie的设置和传输涉及的比较多,如何 ...
- 数字证书在web应用中实现登陆
1数字证书登录认证的优点 作为企业信息系统的第一道大门,身份认证是确保企业信息资源只能被合法用户所访问的重要保障. 传统的口令认证方式虽然简单,但是由于其易受到窃听.重放等攻击的安全缺陷,使其已无法满 ...
- 数字证书在WEB应用中登录
1数字证书登录认证的优点 作为企业信息系统的第一道大门,身份认证是确保企业信息资源只能被合法用户所访问的重要保障. 传统的口令认证方式虽然简单,但是由于其易受到窃听.重放等攻击的安全缺陷,使其已无法满 ...
- spring bean scope作用域及多线程安全问题场景分析
2019独角兽企业重金招聘Python工程师标准>>> Scope作用域 在 Spring IoC 容器中具有以下几种作用域: singleton:单例模式,在整个Spring Io ...
- 想要求职Web安全相关的岗位,你就必须要懂的知识
随着互联网的发展,各种Web应用变得越来越复杂,满足了用户的各种需求的同时,各种网络安全问题也接踵而至.作为前端工程师也逃不开这个问题,今天一起看一看Web前端有哪些安全问题以及我们如何去检测和防范这 ...
- web前端面试问答_Web服务面试问答
web前端面试问答 在这篇文章中,我们涵盖了您需要熟悉的Web服务概念的几乎所有部分,以回答任何层级问题. 您还将在分类中找到最佳的Web服务面试问题和答案,因此只有在必要时才可以使用特定条款. 今天 ...
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程
最近发现web api很火,园内也有各种大神已经在研究,本人在asp.net官网上看到一个系列教程,原文地址:http://bitoftech.net/2013/11/25/detailed-tuto ...
最新文章
- NetScaler SDWAN 详细配置手册
- Android开发之RecyclerView动态添加item长按删除item源码
- uniapp踩坑指南之坑多到写不完
- centos搭建rsync服务!
- Debian For ARM Webmin Server
- win7计算机找不到脚本文件夹,win7系统开机出现无法找到脚本文件怎么办
- NOIp 2014 #5 解方程 Label:数论?
- 关于Visual Studio “当前不会命中断点.还没有为该文档加载任何符号“的解决方法
- 单片机控制步进电机程序c语言正反转停止,单片机控制步进电机正反转程序
- 2020.8.2- 参加华数之星数学比赛 银奖(二等奖)
- 通俗理解动态库与静态库区别
- 两个tplink路由器有线桥接_新版TP-Link路由器有线桥接怎么设置?
- SQL常用基础参考语句
- google手机连接WIFI后总会提示“无法连接互联网“的解决方法
- 《电子元器件的可靠性》——2.4节电子元器件的失效规律
- m35c android 4.4,索尼m35c刷机的方法
- 【软件设计】六大设计原则讲解
- 鹅得了腺病毒用什么药治疗小鹅摇头晃脑不吃食怎么办
- 柔性塑料漆的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 为何有人会去搞计算机病毒,为什么会有计算机病毒呢