通过删除Set-Cookie标头来利用nginx的代理缓存

通过删除Set-Cookie标头来利用nginx的代理缓存,第1张

概述以下是Google Chrome和Apple的Safari使用的WebKit开发工具中的错误导致的结果.我已经制作了一个 bug report with CrBug,然后在 WebKit Changeset 116952年确定了回归.我要感谢@Grumpy和@Matthieu Cormier,因为他们的帮助是跟踪这个.我等不及下一代Chrome Canary :)了. 我在我的服务器上安装了ngi 以下是Google Chrome和Apple的Safari使用的WebKit开发工具中的错误导致的结果.我已经制作了一个 bug report with CrBug,然后在 WebKit Changeset 116952年确定了回归.我要感谢@Grumpy和@MatthIEu CormIEr,因为他们的帮助是跟踪这个.我等不及下一代Chrome Canary :)了.

我在我的服务器上安装了Nginx以及PHP-FPM,在制作新网站并尝试确保尽可能快地使用Google Chrome的审核工具时.在一些错误中,它给了我这个.

Leverage proxy caching (10)The following publicly cacheable resources contain a Set-cookieheader. This security vulnerability can cause cookies to be sharedby multiple users.

所以我想知道的是,为了不为此域设置Set-cookie标头,我必须添加到以下语句中.然后,我将获取该信息并将其应用于CSS,img,ect子域,以便浏览器可以正确缓存它.

server {    gzip on;    gzip_static on;    Listen          80;    server_name     img.domain.tld;    root            /www/domain/tld;    index           index.PHP index.htm index.HTML;    location ~* \.(gif|png|jpg|jpeg|svg)${        expires 30d;    }    include PHP_fpm;}

请在Grumpy之前跟进请求获取更多信息.

这是我用于PHP FPM的配置文件,用于img子域.

PHP-FPM包括

location ~ \.PHP${    fastcgi_pass    unix:/tmp/PHP.socket;    fastcgi_param   SCRIPT_filename                    $document_root$fastcgi_script_name;    include         fastcgi_params;}

如您所见,它应该仅在位置以PHP文件扩展名结束时激活.

有趣的是,我还有一个CSS文件被报告为具有set-cookie标头,并且由CSS子域服务,其中没有包含PHP-fpm …这里是该部分的配置文件.

server {    gzip_static on;    Listen          80;    server_name     CSS.domain.tld;    root            /www/domain/CSS;    index           index.htm index.HTML;    location ~* \.(CSS)${        expires 7d;    }}

文件是……

Leverage proxy caching (5)    The following publicly cacheable resources contain a Set-cookie     header. This security vulnerability can cause cookies to be shared    by multiple users.

> style.CSS(由CSS.domain.tld提供)
> 2009EMSWeeklogoSmall.jpg(由domain.tld提供)
> EMS FOUR.jpg(由domain.tld提供)
> get_adobe_reader.png(由img.domain.tld提供)
> dhs-ntas-badge-small.jpg(由dhs.gov提供)

domain.tld服务器配置如下所示.

server {    gzip on;    gzip_static on;    Listen          80;    server_name     .domain.tld;    root            /www/domain/www;    index           index.PHP index.htm index.HTML;    location ~* \.(htm|HTML|ico|icns|hqx|gif|png|svg|jpg|jpeg|svg)${        expires 1d;    }    include PHP_fpm;}
解决方法 标识要缓存的资源是非默认行为.因此,Chrome导致此通知的任何内容都是您指定要缓存的对象.

缓存指令(在本例中为public)可以通过两种方式设置.

>你的Nginx告诉它缓存.
> PHP告诉它缓存,然后由Nginx转发.

根据你的上面的Nginx配置,并忽略整个include PHP_fpm;,除非你的图像(gif,jpg,png)以某种方式被执行,否则没有什么会建议#1.

PHP也有可能有这样的缓存指令.在这种情况下,这是你应该从核心修复而不是尝试修补工作的东西.

但是在这两种情况下,您还可以输入一个奇怪的场景.如果找不到您的图像,它将尝试查找404页面.如果404是直接或间接的可执行文件(PHP),那么它可以携带一个set cookie命令.如果404指令也告诉它被缓存,这将是一个不好的行为.所以,一定要检查一下.同样也明显适用于任何其他错误代码.

鉴于目前的信息,这是我所能猜到的.如果发现任何错误以及Nginx和/或PHP-fpm的完整配置,您可能需要跟进有关哪个确切项目导致Chrome提供此类消息的其他信息.

我试着查看完整的http标头,看看是否有任何cookie的迹象或传递的任何自定义信息.

来自OP网站的示例响应标头导致警告.

telnet img.nassauems.net 80Trying 205.186.162.66...Connected to img.nassauems.net.Escape character is '^]'.GET http://img.nassauems.net/buttons/get_adobe_reader.png http/1.1Host: img.nassauems.nethttp/1.1 200 OKServer: Nginx/1.2.4Date: Sat,12 Jan 2013 20:24:19 GMTContent-Type: image/pngContent-Length: 2597Last-ModifIEd: Fri,28 Dec 2012 08:30:57 GMTConnection: keep-aliveExpires: Mon,11 Feb 2013 20:24:19 GMTCache-Control: max-age=2592000Accept-Ranges: bytes

来自我的网站的示例响应标头,不会引起警告.

telnet www.mysite.com 80Trying 123.123.123.123...Connected to www.mysite.com.Escape character is '^]'.GET http://www.mysite.com/test.png http/1.1Host: www.mysite.comhttp/1.1 200 OKServer: Nginx/1.0.12Date: Sat,12 Jan 2013 20:21:43 GMTContent-Type: image/pngContent-Length: 207Last-ModifIEd: Sat,27 Aug 2011 04:42:30 GMTConnection: keep-aliveExpires: Sun,13 Jan 2013 20:21:43 GMTCache-Control: max-age=86400Accept-Ranges: bytes

您看得出来差别吗?我不能!

我将此标记为Chrome Audit的错误.

总结

以上是内存溢出为你收集整理的通过删除Set-Cookie标头来利用nginx的代理缓存全部内容,希望文章能够帮你解决通过删除Set-Cookie标头来利用nginx的代理缓存所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1097454.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存