我第一次听到'ETag'。根据我能够通过我所使用的系统确定的内容,系统使用eTags来验证提交的项目在提交更改之前是否未被更改。如果另一个用户修改了该项,则系统响应ETag无效。用户正在使用为项目创建的REST服务,并且在几年内未被更改。我正在开发一个基于JIRA的Java应用程序,它有REST服务插件。
现在至于关于ETag做什么,我在这里不知所措。 我们对系统的安全扫描将标头ETag标记为注入代码的风险。也许我过分思考了这一点,但是,
我一直在这个论坛上阅读有关ETag的事情的帖子,但是我不知道我从步骤1到最后一步的ETag做了什么/怎么做。
列出资源我发现:
答案 0 :(得分:1)
ETag是由应用程序中的某些代码创建和设置的,还是由Tomcat服务器创建的?
如果服务器是Tomcat,请求是Tomcat服务器上的静态文件,是的,它是由Tomcat创建的。如果服务器是apache httpd,请求是静态文件,是的。 Tomcat和apache httpd的ETag计算算法不同。 ETag计算没有标准规范。
如果请求是非静态文件,则可以/可以将Etag添加到响应HTTP标头。
我是否要将ETag的值与其进行比较以确保其有效?
对于客户端,您可以将ETag值与其他HTTP响应(通常是相同的URL)进行比较。
对于服务器端,您可以将If-Non-Match与应该作为ETag值响应的内容进行比较。如果值匹配,则应响应HTTP 304。
如何验证ETag的值是否有效?
通常服务器验证Etag。您可以为每个请求计算ETag值。但更常见的是ETag值缓存在服务器上。
如果请求提供了If-None-Match,那么验证甚至会发生在哪里?
这取决于服务器的实现。
如何保护注射免受注射?
ETag值本身不会注入任何东西。但它可以用于像Cookie这样的HTTP请求跟踪。请参阅this article。