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、强伪随机数

[web 安全] php随机数安全问题的更多相关文章

  1. Web应用程序的安全问题

    常规的安全问题主要分为以下几大类 一,跨站脚本攻击(XSS) 指的是攻击者向web页面注入恶意的Javascript代码,然后提交给服务器,但是服务器并没有做校验和转义等处理,随即服务器的响应页就被植 ...

  2. Java Web(八) 事务,安全问题及隔离级别

    事务 什么是事务? 事务就是一组原子性的SQL查询,或者说是一个独立的工作单元. 事务的作用 事务在我们平常的CRUD(增删改查)操作当中也许不太常用, 但是如果我们有一种需求,一组操作中必须全部成功 ...

  3. web应用下的安全问题以及tomcat/nginx对应解决方法(持续更新、亲测可解决问题)

    最近一券商那边扫描反馈了下面几个非业务型安全漏洞,要求解决,如下: XSS 自己写个脚本response的时候对特殊字符进行了处理,或者网上搜下一堆(不要忘了回车.换行). HTML form wit ...

  4. web开发中的安全问题

    web开发中很多东西由前段来负责判断,比如常见的邮箱 电话号码,前端判断到不是一个正确的格式,在你点击提交时候提示你格式填错了,然后不请求后端php,直到你填写正确的格式为止.这种其实可以修改js或者 ...

  5. 关于web软件信息安全问题防护资料的整理(二)

    想要做好软件的安全防护,首先就得了解web系统的安全威胁,那么web系统都存在哪些威胁呢? 应用层攻击.网络层攻击和混合攻击. 传统被动.单点以及彼此孤立的防护手段已不能应对越来越严峻的安全威胁. 改 ...

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

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

  7. 一枚招聘信息——微信支付web前端开发工程师【已招到】

    已招到 工作地点: 深圳 职位类别: 技术类 招聘人数: 1人 工作职责: 负责微信支付h5应用产品的前端开发:负责微信支付营销活动,h5游戏的开发:负责微信支付内部平台的开发与日常维护 工作要求: ...

  8. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【开篇】【持续更新中。。。】

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

  9. web 安全 初探 (正在更新)

    1.web应用程序所采用的防卫机制的几个核心构成:1.处理用户对应用程序的数据和功能的访问,以防止用户未经授权访问.2.处理用户的输入,以防止恶意的输入导致未预期的行为.3.处理攻击,以确保应用程序在 ...

随机推荐

  1. VMware 15 安装 macOS 10.14优质教程链接集合

    https://www.jianshu.com/p/25d2d781bd98 https://mp.weixin.qq.com/s/91Qc7L7E0xbVYXUcReUb_w https://blo ...

  2. 前端入门——day1(简介及推荐书籍和网站)

    写给谁 这篇文章写给想要入门前端或者刚入门前端的小白~如果是已经工作好几年的小伙伴们可以直接跳过这一系列文章啦. 为啥写这篇文章 终于决定给自己挖这个坑了,之前一直没打算写这样的系列文章.回想起自己的 ...

  3. 北风设计模式课程---开放封闭原则(Open Closed Principle)

    北风设计模式课程---开放封闭原则(Open Closed Principle) 一.总结 一句话总结: 抽象是开放封闭原则的关键. 1."所有的成员变量都应该设置为私有(Private)& ...

  4. win7不正常开关机,系统恢复选项

    会win7不正常开关机后,会默认进入“系统回复选项”. 无人值守的机器远程会无法连接,默认会进入此界面. 解决方法: 到现场,鼠标.键盘.显示器, 开机后选择正常启动, 在命令行模式输入以下命令bcd ...

  5. LeetCode 10——正则表达式匹配

    1. 题目 2. 解答 在 回溯算法 中我们介绍了一种递归的思路来求解这个问题. 此外,这个问题也可以用动态规划的思路来解决.我们定义状态 \(P[i][j]\) 为子串 \(s[0, i)\) 和 ...

  6. 20160711--C# 委托的三种调用示例(同步调用 异步调用 异步回调)【转载】

    首先,通过代码定义一个委托和下面三个示例将要调用的方法: 代码如下: public delegate int AddHandler(int a,int b); public class 加法类 { p ...

  7. Linux_DNS服务器

    目录 目录 DNS DNS Server ServerSite Master DNS Server Forward Domain Reverse Resolution Slave DNS Server ...

  8. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_5_InvalidClassException异常_原理

    序列化一遍 反序列化再来一遍 age的修饰符改为public 直接反序列化就会抛出异常 序列化的时候会给Person.class添加序列号,serialVersionUID,.反序列化需要对比这个se ...

  9. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_9_JDK7和JDK9流中异常的处理

    jdk7 jdk9

  10. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_04 数据结构_3_数据结构_数组

    0x代表16进制的地址 arr通过首地址找到存储空间.