- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我第一次听说“ETag”。根据我所使用的系统能够确定的情况,系统使用 eTag 来验证提交的项目在提交更改之前没有被更改。如果另一个用户修改了该项目,则系统会响应 ETag 无效。用户使用的是为项目创建的 REST 服务,这些服务几年来都没有改变。我正在开发一个基于 JIRA 的 Java 应用程序,该应用程序具有 REST 服务插件。
现在关于如何处理 ETag,我在这里不知所措。我们对系统的安全扫描将标题 ETag 标记为注入(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/
我是一名优秀的程序员,十分优秀!