2017-08-02 35 views
1

在運行的HP Fortify的掃描,我得到了以下不安全隨機性警告:.value()方法中的隨機數生成器在哪裏?

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告訴,沒有任何理由,這應該是使用隨機值產生,除非它是深深的實現中。有沒有人知道它在哪裏使用,以及這是否是一個真正的安全問題或誤報?

回答

0

我已經看到與Fortify幾次相同的問題,我相信這是一個誤報。 Fortify以某種方式認爲t-sql中的value()返回了一個隨機值,我還沒有找到任何證據(也沒有)。

如果我錯了(我不認爲我是),那麼你可以問你的應用程序是否需要該語句的安全隨機性,因爲它可能不會。 Fortify是一種不理解上下文的工具,所以它只能在看到不安全的隨機性而不理解是否需要安全的隨機性時引發一個標誌。熟練的代碼審查人員知道有關應用程序的足夠上下文以及此處發生的情況,應該能夠說明是否需要安全隨機性(如果涉及隨機性 - 這是有疑問的)。

請記住,Fortify與其他安全工具一樣,並不完美。即使我們將背景置於等式之外,但這並不是這個工具提出的問題的唯一例子,在我看來,這只是一個真正的問題。