日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

[web 安全] php随机数安全问题

發布時間:2025/6/17 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [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随机数安全问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。