3
標題幾乎說明了一切,但總是檢查isCommitted()
類型ServletResponse
是否有價值?我的具體的例子是在使用一個過濾器,我這樣做,如果用戶沒有被授權執行特定動作(CSRF檢查要具體):應該ServletResponse被提交始終在修改響應之前檢查
if (!httpResp.isCommitted()) {
httpResp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
在這種情況下,它幾乎感覺就像是矯枉過正我檢查了迴應。我的過濾器位於鏈條的頂端,在它之前沒有任何東西會提交響應(更不用說允許過濾器鏈繼續下去),但我不禁感覺這是一個假設,它在我不應該做的好防守編程的名字。我覺得檢查回覆的狀態是一種很好的做法。
所以,所有這一切都說,在這個時候檢查響應是否有價值?而且,爲了進一步擴大這一點,是否每次總是檢查響應被修改是一個好習慣?在我的情況下,我幾乎找不到理由支持CSRF令牌不匹配時引發的異常以外的其他情況(假設這隻會在攻擊場景中發生)。
如果你應該阻止訪問該頁面,你不希望任何其他錯誤的軟件阻止你這樣做。你想*找到*這些,而不是檢查這一點肯定會幫助你做到這一點,並肯定會刪除一個安全漏洞。 – EJP