类别:LINUX / GNU / 日期:2020-04-02 / 浏览:1322 / 评论:0
Cache-Control 是最重要的规则。这个字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令。这些指令指定用于阻止缓存对请求或响应造成不利干扰的行为。这些指令通常覆盖默认缓存算法。缓存指令是单向的,即请求中存在一个指令并不意味着响应中将存在同一个指令。
无论是Apache或Nginx都不应该缓存页面,只适合用于缓存静态资源。
#nocache:不缓存(比如:表单信息被清除),但公共变量可以缓存 #private:私有方式缓存(比如:表单信息被保留,但在生存期内有效) #private_no_cache:私有方式但不过期(表单信息被保留) #publice:公有方式,(表单信息也被保留)
Apache例子设置如下:
<IfModule expires_module> ExpiresActive on ExpiresByType image/svg+xml A31536000 #ExpiresByType application/rss+xml A31536000 #ExpiresByType application/xhtml+xml A31536000 #ExpiresByType application/atom_xml A31536000 </IfModule> <FilesMatch "\.(bmp|png|gif|jpg|jpeg|svg|svgz|ico|webp)$"> #Header set Cache-Control "max-age=31536000" Header set Cache-Control "max-age=31536000, public" </FilesMatch> <FilesMatch "\.(mp3|mp4|avi|mpg|mpeg|rm|rmvb|mov|wmv|wma|swf|flv)$"> #Header set Cache-Control "max-age=31536000" Header set Cache-Control "max-age=31536000, public" </FilesMatch> <FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)$"> #Header set Cache-Control "max-age=31536000" Header set Cache-Control "max-age=31536000, public" </FilesMatch>
Nginx例子设置如下:
location ~ .*\.(bmp|png|gif|jpg|jpeg|svg|svgz|ico|webp)$ { expires 356d; } location ~ .*\.(mp3|mp4|avi|mpg|mpeg|rm|rmvb|mov|wmv|wma|swf|flv)$ { expires 356d; } location ~ .*\.(ttf|ttc|otf|eot|woff|woff2|font.css|css|js)?$ { expires 356d; }
关于HTTP状态码之200和304
HTTP状态码(HTTP Status Code)是一种表示网页服务器响应状态的三位数字编码。通过这些数字,可以简化状态的表达。状态码有几十种,其中首位数字为1-5。根据这5个数字,状态码可以分为5类。1开头的表示请求正在处理;2开头请求已经成功处理;3开头表示重定向;4开头表示请求错误;5开头表示服务器错误。
在嗅探抓包过程中,常见的有两种200和304。这两个状态码都关系到能否获取重要信息。当客户第一次请求服务器资源,服务器成功返回资源,这时状态码为200。所以,状态码为200的数据包往往包含用户从服务器获取的数据。
每个资源请求完成后,通常会被缓存在客户端,并会记录资源的有效时间和修改时间。当客户再次请求该资源,客户端首先从缓存中查找该资源。如果该资源存在,并且在有效期,则不请求服务器,就不会产生对应的请求数据包。
如果不在有效期,客户端会请求服务器,重新获取。服务器会判断修改时间,如果没有修改过,就会返回状态码304,告诉客户端该资源仍然有效,客户端会直接使用缓存的资源。针对304的响应,渗透人员可以分析对应的请求包,获取资源路径。如果该资源不限制访问,就可以直接请求获取。否则,就需要进行Cookie劫持,进行获取。
发表评论 / 取消回复