gpt4 book ai didi

java - 是否应该在修改响应之前始终检查 ServletResponse isCommitted

转载 作者:可可西里 更新时间:2023-11-01 16:23:15 26 4
gpt4 key购买 nike

标题几乎不言自明,但始终检查 ServletResponse 类型的 isCommitted() 是否有值(value)?我的具体示例是使用过滤器,如果用户无权执行特定操作(具体为 CSRF 检查),我将执行以下操作:

if (!httpResp.isCommitted()) {
httpResp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}

在这种情况下,我检查响应几乎感觉有点矫枉过正。我的过滤器位于链的顶部,在它之前应该没有任何东西会提交响应(更不用说允许过滤器链继续了),但我不禁觉得这是一个假设我不应该做的好的防御性编程的名字。我觉得检查响应状态是一种很好的做法。

综上所述,此时检查响应是否有值(value)?为了进一步扩展这一点,每次响应被修改时总是检查这个是否是一个好习惯?就我而言,除了在 CSRF token 不匹配时抛出异常(假设这只会在攻击场景中发生)之外,我几乎找不到支持其他事情的理由。

最佳答案

一般来说,根据执行某些代码的时间,您可以知道响应尚未提交。我不会在所有地方添加此检查。

有些地方我会添加它:-

  • 一段库代码,可以在各种不同的上下文中调用
  • 在响应提交之前或之后可能到达的异常处理代码

关于java - 是否应该在修改响应之前始终检查 ServletResponse isCommitted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17818362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com