簡體   English   中英

在強化報告中記錄偽造問題

[英]Log forging issues in fortify report

我已經為我的應用程序生成了Fortify報告。 在Fortify報告中,以下代碼顯示了日志偽造問題:

holDate = ((MaintainHolidayCalenderForm) form).getCALENDER_DATE();
logger.info("This is some description" + holDate + holName );

並且根據某些人的建議,我已經將“ / n”替換為“ ”,將“ / r”替換為“ ”,但是問題仍然沒有解決。

誰能告訴我如何解決這個問題?

提前致謝。

黑名單修復(例如,刪除日志清除字符(/ n / r))仍然為攻擊者提供了對應用程序進行惡意操作的機會。 如果holDate和holName是從瀏覽器提交的,則它們是UTF-8字符串,該字符串可能很長,並且在相當大的UTF-8 Unicode字符集中有任何字符。 如果通常使用HTML查看器查看日志(常見),則攻擊示例可能是這樣的:攻擊者可以偽造一條記錄,表明他們已注銷,做了不好的事情,然后編寫一條日志消息,使用任何導致退格或刪除鍵的unicode字符返回“友好的攻擊者已注銷-在這里什么也看不到”消息。 (注意:您永遠不要試圖預測攻擊者可能會如何影響壞事,因此不要嘗試將所有以Unicode方式退格的方法列入黑名單。)

不要將其列入黑名單,而應確保要寫入日志的數據是期望的類型,也稱為白名單驗證,並且長度合理。

因此,此修復程序(在您發布的代碼中):1.確保holDate是Date對象( java.util.Date )(如果尚未添加)。
2. HolName可能是長度相對較小的字母數字字符串。 選擇較小的長度(例如30個字符),並確保holName中僅接受字母數字字符。
在檢查長度后,可以使用正則表達式String.matches("^[a-zA-Z0-9]*$")以確保僅接受字母數字字符。

您可能應該在針對pojos的設置器中執行此白名單輸入驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM