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随机数安全问题相关推荐

  1. Web笔记-session盗用安全问题(Spring Boot获取所有session及提高安全性)

    此处本人的过滤代码如下: 仅仅是判断了这个session有没有被记录,有没有attribute! 某些IT论坛,就是这样的,通过session,就可以进行批量帐号操作,发取http协议. 这里演示如下 ...

  2. web渗透之jwt 安全问题

    前言 JWT 全称 JSON Web Token,是一种标准化格式,用于在系统之间发送加密签名的 JSON 数据.原始的 Token 只是一个 uuid,没有任何意义. JWT 包含了部分业务信息,减 ...

  3. 单点登录与权限管理本质:cookie安全问题

    继续介绍「单点登录与权限管理」系列的第一部分:单点登录与权限管理本质,前一篇文章介绍了单点登录概念,以CAS协议的基本流程为例讲解了系统间的交互过程,过程中,cookie的设置和传输涉及的比较多,如何 ...

  4. 数字证书在web应用中实现登陆

    1数字证书登录认证的优点 作为企业信息系统的第一道大门,身份认证是确保企业信息资源只能被合法用户所访问的重要保障. 传统的口令认证方式虽然简单,但是由于其易受到窃听.重放等攻击的安全缺陷,使其已无法满 ...

  5. 数字证书在WEB应用中登录

    1数字证书登录认证的优点 作为企业信息系统的第一道大门,身份认证是确保企业信息资源只能被合法用户所访问的重要保障. 传统的口令认证方式虽然简单,但是由于其易受到窃听.重放等攻击的安全缺陷,使其已无法满 ...

  6. spring bean scope作用域及多线程安全问题场景分析

    2019独角兽企业重金招聘Python工程师标准>>> Scope作用域 在 Spring IoC 容器中具有以下几种作用域: singleton:单例模式,在整个Spring Io ...

  7. 想要求职Web安全相关的岗位,你就必须要懂的知识

    随着互联网的发展,各种Web应用变得越来越复杂,满足了用户的各种需求的同时,各种网络安全问题也接踵而至.作为前端工程师也逃不开这个问题,今天一起看一看Web前端有哪些安全问题以及我们如何去检测和防范这 ...

  8. web前端面试问答_Web服务面试问答

    web前端面试问答 在这篇文章中,我们涵盖了您需要熟悉的Web服务概念的几乎所有部分,以回答任何层级问题. 您还将在分类中找到最佳的Web服务面试问题和答案,因此只有在必要时才可以使用特定条款. 今天 ...

  9. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程

    最近发现web api很火,园内也有各种大神已经在研究,本人在asp.net官网上看到一个系列教程,原文地址:http://bitoftech.net/2013/11/25/detailed-tuto ...

最新文章

  1. NetScaler SDWAN 详细配置手册
  2. Android开发之RecyclerView动态添加item长按删除item源码
  3. uniapp踩坑指南之坑多到写不完
  4. centos搭建rsync服务!
  5. Debian For ARM Webmin Server
  6. win7计算机找不到脚本文件夹,win7系统开机出现无法找到脚本文件怎么办
  7. NOIp 2014 #5 解方程 Label:数论?
  8. 关于Visual Studio “当前不会命中断点.还没有为该文档加载任何符号“的解决方法
  9. 单片机控制步进电机程序c语言正反转停止,单片机控制步进电机正反转程序
  10. 2020.8.2- 参加华数之星数学比赛 银奖(二等奖)
  11. 通俗理解动态库与静态库区别
  12. 两个tplink路由器有线桥接_新版TP-Link路由器有线桥接怎么设置?
  13. SQL常用基础参考语句
  14. google手机连接WIFI后总会提示“无法连接互联网“的解决方法
  15. 《电子元器件的可靠性》——2.4节电子元器件的失效规律
  16. m35c android 4.4,索尼m35c刷机的方法
  17. 【软件设计】六大设计原则讲解
  18. 鹅得了腺病毒用什么药治疗小鹅摇头晃脑不吃食怎么办
  19. 柔性塑料漆的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. 为何有人会去搞计算机病毒,为什么会有计算机病毒呢

热门文章

  1. as用百度地图不联网就gg
  2. AlertDialog中的EditText不能输入
  3. chrome表单自动填充去掉input黄色背景
  4. Java学习日志(一)
  5. ASP.Net调试过程中弹出的浏览器端口和asp.net development server的端口不一样
  6. ORM框架之------Dapper,Net下无敌的ORM
  7. 第二阶段团队项目冲刺第六天
  8. 大量POI点展示的一种解决方案
  9. Spring中自己主动装配
  10. 继承中类以及成员变量初始化的讨论。