gpt4 book ai didi

java - 如果用户没有通过 If-None-Match,如何验证 ETag 是否有效?

转载 作者:行者123 更新时间:2023-11-30 11:02:52 25 4
gpt4 key购买 nike

我第一次听说“ETag”。根据我所使用的系统能够确定的情况,系统使用 eTag 来验证提交的项目在提交更改之前没有被更改。如果另一个用户修改了该项目,则系统会响应 ETag 无效。用户使用的是为项目创建的 REST 服务,这些服务几年来都没有改变。我正在开发一个基于 JIRA 的 Java 应用程序,该应用程序具有 REST 服务插件。

现在关于如何处理 ETag,我在这里不知所措。我们对系统的安全扫描将标题 ETag 标记为注入(inject)代码的风险。也许我想多了,但是,

  1. ETag 是由应用程序中的某些代码创建和设置的,还是由 Tomcat 服务器创建的?
  2. 我是否要获取 ETag 的值并将其与某些东西进行比较确保它有效?
  3. 我如何验证ETag 有效吗?
  4. 如果请求提供了 If-None-Match,验证甚至在哪里发生?
  5. 如何防止它被注入(inject)?

我一直在阅读这个论坛上关于处理 ETag 的帖子,但我不明白从第 1 步到最后一步我要用 ETag 做什么/如何做。

真的可以引用我如何对此进行编码。

列出我找到的资源:

最佳答案

Is the ETag created and set by some code in the application or is it created by the Tomcat server?

如果服务器是Tomcat,请求的是Tomcat服务器上的静态文件,是的,是Tomcat创建的。如果服务器是 apache httpd 并且请求是静态文件,是的。 Tomcat和apache httpd的ETag计算算法不同。 ETag计算没有标准规范。

如果请求不是静态文件,Etag 可以/可以添加到响应 HTTP header 中。

Am I to take the value of the ETag and compare it to something to make sure that it is valid?

至于客户端,您可以将 ETag 值与其他 HTTP 响应(通常是相同的 URL)进行比较。

至于服务器端,您可以将 If-Non-Match 与应响应的 ETag 值进行比较。如果值匹配,您应该响应 HTTP 304。

How do I validate that the value for the ETag is valid?

通常服务器验证Etag。您可以为每个请求计算 ETag 值。但更常见的是 ETag 值缓存在服务器上。

Where does the validation even occur if the If-None-Match were provided by the request?

这取决于服务器实现。

How do I protect it from injection?

ETag 值本身不注入(inject)任何东西。但它可以像 Cookie 一样用于 HTTP 请求跟踪。参见 this article .

关于java - 如果用户没有通过 If-None-Match,如何验证 ETag 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30609183/

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