.value() 方法中的随机数生成器在哪里?



运行HP Fortify扫描时,我收到以下不安全的随机性警告:

The random number generator implemented by value() cannot withstand a cryptographic attack.

有问题的行位于 T-SQL 存储过程中,使用value()方法从 XML 中提取值:

SELECT t.c.value('@RequestId[1]', 'BIGINT') AS RequestId

据我从文档中可以看出,除非它深入实现,否则没有理由使用随机值生成器。有谁知道它在哪里使用,以及这是真正的安全问题还是误报?

我在 Fortify 上见过几次同样的问题,我相信这是一个误报。 Fortify 以某种方式认为 t-sql 中的 value(( 返回了一个随机值,我没有找到任何证据(你也没有(。

如果我错了(我不认为我是错的(,那么你可以问你的应用程序是否需要该语句的安全随机性,因为它可能不需要。 Fortify是一个不理解上下文的工具,所以它所能做的就是在看到不安全的随机性时举起一个标志,而不了解是否需要安全的随机性。 一个熟练的代码审阅者,如果对应用程序有足够的上下文以及这里发生的事情,应该能够说这里是否需要安全的随机性(如果涉及随机性 - 这是值得怀疑的(。

请记住,Fortify与任何其他安全工具一样,并不完美。 即使我们把上下文排除在外,这并不是该工具提出的问题的唯一例子,在我看来,这不是一个真正的问题。

最新更新