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

时间:2017-08-02 15:17:20

标签: sql xml security

在运行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

据我所知documentation,没有理由认为应该使用随机值生成器,除非它在实现中深入。有谁知道这在哪里使用以及这是真正的安全问题还是误报?

1 个答案:

答案 0 :(得分:0)

我曾经多次使用Fortify看过同样的问题,我认为这是误报。 Fortify以某种方式认为t-sql中的value()返回一个随机值,我没有找到任何证据(你也没有)。

如果我错了(我不认为我是),那么您可以询问您的应用程序是否需要该声明的安全随机性,因为它可能不是。 Fortify是一个不理解上下文的工具,因此当它看到不安全的随机性而不了解是否需要安全随机性时,它所能做的只是提升一个标志。熟悉应用程序的足够背景以及此处发生的事情的熟练的代码审阅者应该能够说明是否需要安全随机性(如果涉及随机性 - 这是有疑问的)。

请记住,Fortify与任何其他安全工具一样,并不完美。即使我们从这个等式中取出背景,这也不是该工具提出的问题的唯一例子,在我看来这不是一个真正的问题。