Insecure Randomness 不安全的随机数】的更多相关文章

继续对Fortify的漏洞进行总结,本篇主要针对  Insecure Randomness  漏洞进行总结,如下: 1.Insecure Randomness(不安全随机数) 1.1.产生原因: 成弱随机数的函数是 random(). 电脑是一种具有确定性的机器,因此不可能产生真正的随机性.伪随机数生成器 (PRNG) 近似于随机算法,始于一个能计算后续数值的种子. PRNG 包括两种类型:统计学的 PRNG 和密码学的 PRNG.统计学的 PRNG 可提供有用的统计资料,但其输出结果很容易预测…
Fortify扫描漏洞解决方案: Log Forging漏洞: 1.数据从一个不可信赖的数据源进入应用程序. 在这种情况下,数据经由getParameter()到后台. 2. 数据写入到应用程序或系统日志文件中. 这种情况下,数据通过info() 记录下来.为了便于以后的审阅.统计数据收集或调试,应用程序通常使用日志文件来储存事件或事务的历史记录.根据应用程序自身的特性,审阅日志文件可在必要时手动执行,也可以自动执行,即利用工具自动挑选日志中的重要事件或带有某种倾向性的信息.如果攻击者可以向随后…
前段时间公司又一轮安全审查,要求对各项目进行安全扫描,排查漏洞并修复,手上有几个历史项目,要求在限定的时间内全部修复并提交安全报告,也不清楚之前是如何做的漏洞修复,这次使用工具扫描出来平均每个项目都还有大概100来个漏洞.这些漏洞包括SQL语句注入,C#后端代码,XML文件,以及前端HTML,JS代码几个方面,由于一些项目比较老旧,限定的时间又短,做大的改动如果测试不到位,很难保证不出什么问题,所以做了一些应及处理,不过这些都不失为一种手段,下面就来对这次安全漏洞的处理做个总结. 公司的漏洞扫描…
1.代码注入 1.1 命令注入 命令注入是指应用程序执行命令的字符串或字符串的一部分来源于不可信赖的数据源,程序没有对这些不可信赖的数据进行验证.过滤,导致程序执行恶意命令的一种攻击方式. 问题代码: $dir = $_POST['dir'] exec("cmd.exe /c dir" + $dir); 修复方案:(1)程序对非受信的用户输入数据进行净化,删除不安全的字符.(2)限定输入类型, 创建一份安全字符串列表,限制用户只能输入该列表中的数据. 修复例子: //方式1 if (!…
Log Forging漏洞: 数据从一个不可信赖的数据源进入应用程序. 在这种情况下,数据经由CreditCompanyController.java 的第 53行进入 getParameter(). 2. 数据写入到应用程序或系统日志文件中. 这种情况下,数据通过CreditCompanyController.java 文件第86 行的 info() 记录下来.为了便于以后的审阅.统计数据收集或调试,应用程序通常使用日志文件来储存事件或事务的历史记录.根据应用程序自身的特性,审阅日志文件可在必…
公众号「码海」欢迎关注 背景 我们的项目工程里经常在每个函数需要用到 Random 的地方定义一下 Random 变量(如下) public void doSomethingCommon() { Random rand = new Random(); ... } 在用 sonar 进行检查时,会发现会有如下告警 Creating a new Random object each time a random value is needed is inefficient and may produc…
.Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: ; i < ; i++) { Random random1 = new Random(); Console.WriteLine(random1.Next()); } 测试生成随时基本都是相同的结果: 很显然上面的结果是不靠谱的,为什么会这样呢,因为微软的Random类,发现在C#中生成随机数使用的算法是线性同余法,这种算法生成的不是绝对随机,而…
在项目开发中,一般都会使用到“随机数”,但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的方法. 1.随机布尔值: /// <summary> /// 随机布尔值 /// </summary> /// <param name="random"></param> /// <returns>随机布尔值</returns> public static bool N…
JavaScript内置函数random(seed)可以产生[0,1)之间的随机数,若想要生成其它范围的随机数该如何做呢? 生成任意范围的随机数 //生成[100,120)之间的随机数 Math.floor(Math.random() * 20+100); 大于等于100小于120的随机数:   我们还可以配合当前时间来生成随机数: var offset = new Date().getMilliseconds(); Math.floor(Math.random() * offset+100)…
在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数.那就看下面的两种随机取整数的方法:1.A:select floor(rand()*N) ---生成的数是这样的:12.0 B:select cast( floor(rand()*N) as int) ---生成的数是这样的:12 2.A:select ceiling(rand() * N) ---生成的数是这…