标题几乎不言自明,但总是在类型isCommitted()
上检查ServletResponse
是否有价值?我的具体示例是使用过滤器,如果用户无权执行某项操作(CSRF检查具体),我会执行以下操作:
if (!httpResp.isCommitted()) {
httpResp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
在这种情况下,我几乎感觉有点过分,我已经检查了回复。我的过滤器位于链的顶部,在它之前应该没有任何东西可以提交响应(更不用说允许过滤器链继续进行),但我不禁感到这是一个假设,我不应该做的好防守编程的名称。我觉得检查响应的状态是个好习惯。
所以,所有这一切,是否有必要在此时检查响应?为了进一步扩展这一点,每次响应被修改时总是检查是一种好习惯吗?就我而言,当CSRF令牌不匹配时,我几乎找不到支持除了抛出异常之外的其他东西的理由(假设这只会发生在攻击场景中)。
答案 0 :(得分:0)
通常,根据执行某些代码的时间,您知道响应尚未提交。我不会在任何地方添加这个检查。
我会添加一些地方: -