解决高风险代码(含前后端):Insecure Randomness

news2024/12/27 13:15:54

Abstract
标准的伪随机数值生成器不能抵挡各种加密攻击

Explanation
在对安全性要求较高的环境中,使用能够生成可预测值的函数作为随机数据源,会产生 Insecure
Randomness 错误。 电脑是一种具有确定性的机器,因此不可能产生真正的随机性。伪随机数生成器
(PRNG) 近似于随机算法,始于一个能计算后续数值的种子。 PRNG 包括两种类型:统计学的 PRNG 和密码
学的 PRNG。统计学的 PRNG 提供很多有用的统计属性,但其输出结果很容易预测,因此容易复制数值流。
在安全性所依赖的生成值不可预测的情况下,这种类型并不适用。密码学的 PRNG 生成的输出结果较难预
测, 可解决这一问题。为保证值的加密安全性,必须使攻击者根本无法、或几乎不可能鉴别生成的随机值和
真正的随机值。通常情况下,如果并未声明 PRNG 算法带有加密保护,那么它很可能就是统计学的 PRNG,
因此不应在对安全性要求较高的环境中使用,否则会导致严重的漏洞(如易于猜测的密码、可预测的加密密
钥、 Session Hijacking 和 DNS Spoofing)。 示例: 下面的代码可利用统计学的 PRNG 为购买产品后仍在有
效期内的收据创建一个 URL。
String GenerateReceiptURL(String baseUrl) {
Random ranGen = new Random();
ranGen.setSeed((new Date()).getTime());
return (baseUrl + ranGen.nextInt(400000000) + “.html”);
}
这段代码使用 Random.nextInt() 函数为它生成的收据页面生成“唯一”的标识符。由于
Random.nextInt() 是统计学的 PRNG,攻击者很容易猜到其生成的字符串。尽管收据系统的底层设计并
不完善,但若使用不会生成可预测收据标识符的随机数生成器(如密码学的 PRNG),就会更安全些

Recommendation
当不可预测性至关重要时,如大多数对安全性要求较高的环境都采用随机性,这时可以使用密码学的 PRNG
。 不管选择了哪一种 PRNG,都要始终使用带有充足熵的数值作为该算法的种子。(切勿使用诸如当前时间
之类的数值,因为它们只提供很小的熵。) Java 语言在 java.security.SecureRandom 中提供了一个加
密 PRNG。就像 java.security 中其他以算法为基础的类那样, SecureRandom 提供了与某个特定算法
集合相关的包,该包可以独立实现。当使用 SecureRandom.getInstance() 请求一个 SecureRandom
实例时,您可以申请实现某个特定的算法。如果算法可行,那么您可以将它作为 SecureRandom 的对象使
用。 如果算法不可行,或者您没有为算法明确特定的实现方法,那么会由系统为您选择 SecureRandom 的实
现方法。 Sun 在名为 SHA1PRNG 的 Java 版本中提供了一种单独实现 SecureRandom 的方式, Sun 将其描
述为计算: “SHA-1 可以计算一个真实的随机种子参数的散列值,同时,该种子参数带有一个 64 比特的计算
器, 会在每一次操作后加 1。在 160 比特的 SHA-1 输出中,只能使用 64 比特的输出 [1]。 ” 然而,文档中有
关 Sun 的 SHA1PRNG 算法实现细节的相关记录很少,人们无法了解算法实现中使用的熵的来源,因此也并不
清楚输出中到底存在多少真实的随机数值。尽管有关 Sun 的实现方法网络上有各种各样的猜测,但是有一点
无庸置疑,即算法具有很强的加密性,可以在对安全性极为敏感的各种内容中安全地使用

示例1:
未处理前产生的问题
在这里插入图片描述
解决后如下
在这里插入图片描述
在这里插入图片描述
示例2,前端:
未处理前产生的问题
在这里插入图片描述
解决后如下
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1306884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

招不到人?用C语言采集系统批量采集简历

虽说现在大环境不太好,很多人面临着失业再就业风险,包括企业则面临着招人人,找对口专业难得问题。想要找到适合自己公司的人员,还要得通过爬虫获取筛选简历才能从茫茫人海中找到公司得力干将。废话不多说,直接开整。 1…

汽车底盘市场分析:预计到2025年平均渗透率达到35%

汽车底盘由传动系、行驶系、转向系和制动系四部分组成。底盘作用是支承、安装汽车发动机及其各部件、总成,形成汽车的整体造型,并接受发动机的动力,使汽车产生运动,保证正常行驶。汽车底盘容易产生故障的部位主要集中在&#xff1…

如何本地搭建WampServer并结合cpolar内网穿透实现远程访问

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境,是一组常用来…

聚观早报 |小鹏P7i推出限时福利;荣耀90 GT外观曝光

【聚观365】12月13日消息 小鹏P7i推出限时福利 荣耀90 GT外观曝光 小米14 Ultra春节后登场 苹果新一代iPad Air将搭载M2芯片 Rambus发布内存控制器IP 小鹏P7i推出限时福利 小鹏汽车将旗下智驾主力车型P7i全系车型开启限时购车优惠政策,用户下定小鹏P7i即可享受…

医保电子凭证在项目中的集成应用

随着医保电子凭证使用普及,医疗行业的各个场景都要求支持医保码一码通办,在此分享一下,在C#和js中集成医保电子凭证的demo 供有需要的小伙伴参考。 一、项目效果图 在c#中集成医保电子凭证效果 在js中集成医保电子凭证效果 二、主要代码 c#…

【干货分享】KingIOServer与三菱PLC的通讯的应用案例

哈喽,大家好,我是雷工! 最近一个项目涉及用KingIOServer采集三菱PLC数据,特记录通讯过程方便备忘。 一、版本说明: 1、KingIOServer版本:3.7SP2 2、PLC型号:Q03UDV 和Q03UDE自带以太网网口。…

阿里云国际跨境直播解决方案,视频AI创新营销模式丰富直播场景

据第三方咨询公司iiMedia Research预测,2017-2020年,视频直播行业一直处于高速发展阶段。2020年,视频直播行业市场收入超1万亿元,累计覆盖用户5.26亿。 视频直播的应用范围已从视频娱乐、电子商务等泛互联网行业扩展到在线教育、…

docker安装rabbitmq并安装死信队列插件

环境 debian11 docker 20.10.22 rabbitmq 3.10.0 拉取镜像到本地 docker pull rabbitmq3.10.0 实例化 docker run -d --name rabbit -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSadmin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:…

如何利用淘宝商品详情关键词搜索电商API接口,实现个人收藏的梦想?

随着互联网的快速发展,电子商务市场越来越繁荣,个人收藏爱好者面临着越来越多的商品选择。如何能够高效地找到自己心仪的商品成为了让这一群体头疼的问题。而淘宝商品详情关键词搜索电商API接口的出现,联讯数据为个人实现收藏梦想提供了全新的…

ISP去噪(1)

#灵感# 因为理解的2DNR、3DNR 和当前调试平台标注的2DNR、3DNR 作用有很大差异,所以在网上广撒网,搜集知识。 目前收集出来一个这样的文章,有点像大学生的论文“取其精华,合成糟粕”。------权当一个记录册 目录 运动阈值&…

创建第一个Vue2项目-----HelloWorld

创建第一个Vue项目 第一步先去安装Vue&#xff0c;一共有两种安装方式&#xff0c;这里使用 点击这里下载&#xff1a;Vue.js 添加到自己的项目中 在使用的页面引入<script src"../js/vue.js"></script> 2. 准备好一个容器 <div id"root&qu…

迪拜义乌中国小商品城,开启中东区域展贸新商机

迪拜义乌中国小商品城&#xff0c;一颗璀璨的批发市场新星&#xff0c;正在迪拜杰贝阿里自贸区内冉冉升起。      在全球格局巨变的背景下&#xff0c;阿联酋与欧美货币深度绑定&#xff0c;同时又积极加入金砖国家集团&#xff0c;与发展中国家的经济不断融合。而作为国际…

微信小程序---wxs脚本

WXS&#xff08;WeiXin Script&#xff09;是小程序的一套脚本语言&#xff0c;结合 WXML&#xff0c;可以构建出页面的结构。 WXS 与 JavaScript 是不同的语言&#xff0c;有自己的语法&#xff0c;并不和 JavaScript 一致。 1.wxs和JavaScript的区别 2.wxs脚本基础语法 &a…

uniapp+vite+ts+express踩坑总结

1 关于引入express包报 import express from "express"; ^^^^^^ SyntaxError: Cannot use import statement outside a module的问题。 解决方案&#xff1a; 在package.json中添加type&#xff1a;“module”选项 2 Response is a type and must be imported …

崩坏:星穹铁道【V1.5攻略】五星(金)-遗器主、副词条成长数值参考

星穹铁道中五星遗器词条成长数值攻略&#xff1a; 温馨提示&#xff1a;以下数据会可能会出现一点一点误差&#xff0c;见谅... --------------------------- 一、如图&#xff1a; ----->>细节补充<<----- ①实际数值可能与游戏中不一&#xff0c;若数据出现无法忽…

【BigDecimal类—常用API系列】解决java浮点计算精度损失问题

文章目录 Java浮点计算精度损失问题BigDecimal进行精确运算的解决方案 Java浮点计算精度损失问题 BigDecimal它是干什么用的呢&#xff1f;什么是java浮点计算精度损失问题&#xff1f;我们先看一段代码&#xff0c;看这个代码有什么问题&#xff1f;再说BigDeimal这个类是干什…

Leetcode—113.路径总和II【中等】

2023每日刷题&#xff08;五十七&#xff09; Leetcode—113.路径总和II 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …

Javac编译原理

文章目录 1. Javac是什么2. Javac编译器的基本结构3. Javac工作原理分析 1. Javac是什么 Javac是一种编译器&#xff0c;能将一种语言规范转成另一种语言规范&#xff0c;javac编译器将Java编译器对所有机器都非常友好的一种语言。注意这种语言不是针对某个机器的&#xff0c;…

leetcode对称二叉树(每日一题)

https://leetcode.cn/problems/symmetric-tree/description/ 今天我们在来个题目&#xff0c;对称二叉树&#xff0c;其实这道题的思路我觉得和那到判断两棵树是不是相同的题目很相似&#xff0c;写这个题目的思路还是递归&#xff0c;但是我们看这个题目的时候需要注意的一个…