搜尋
首頁後端開發php教程页面缓存 - PHP中如何禁用用户本地浏览器缓存?

题境: 企业内部一些文件,通过flexpaper在线浏览,原本的office文件都转化成了swf格式,而公司这些文件是只允许员工在线浏览,不允许复制、打印与传播的,如果本地缓存(临时)文件夹中包含这个swf文件,就可以直接拿走并传播了(即使不能完全控制住,但如果达到IE临时文件夹中没有随意缓存此文件的话,也能一定程度上达到效果)

我希望用户本地IE临时文件夹不能缓存某页面的内容,查找资料一般都是php中header控制,html中meta控制,然后我也试用了,结果都没达到效果,在IE对应的本地缓存文件夹中还是可以找到该页面的内容,请各位帮忙指点一下,谢谢了

页面缓存 - PHP中如何禁用用户本地浏览器缓存?

页面缓存 - PHP中如何禁用用户本地浏览器缓存?

回复内容:

题境: 企业内部一些文件,通过flexpaper在线浏览,原本的office文件都转化成了swf格式,而公司这些文件是只允许员工在线浏览,不允许复制、打印与传播的,如果本地缓存(临时)文件夹中包含这个swf文件,就可以直接拿走并传播了(即使不能完全控制住,但如果达到IE临时文件夹中没有随意缓存此文件的话,也能一定程度上达到效果)

我希望用户本地IE临时文件夹不能缓存某页面的内容,查找资料一般都是php中header控制,html中meta控制,然后我也试用了,结果都没达到效果,在IE对应的本地缓存文件夹中还是可以找到该页面的内容,请各位帮忙指点一下,谢谢了

页面缓存 - PHP中如何禁用用户本地浏览器缓存?

页面缓存 - PHP中如何禁用用户本地浏览器缓存?

我在 IE 对应的本地缓存文件夹中还是可以找到该页面的内容

在缓存文件夹中找到很正常。

至于你的问题「如何禁用用户本地缓存」,可以把缓存文件夹设置为只读。别笑,我很正经的。

你只看了 header,为什么不看看 Status Code 啊?如果是 304,则表示 Not Modified,说明被缓存了。

如果被缓存了,会不会在本地缓存文件夹中找到呢?答案是可能会。

本地缓存是浏览器的功能,可以不用去管。

禁用缓存的目的是:当你去请求 web server 时,server 总是把最新的文件给出浏览器,而不用检测这个文件是否更新过。当他传回浏览器的时候,浏览器 IE 就把这个文件(或者一部分)放到本地存起来。

虽然这个文件夹被称为「缓存文件夹」,其实他只是是「临时文件夹」。

其它浏览器也许不使用「缓存文件夹」,比如使用一个小型数据库系统,例如 sqlite。

其实,把内存的内容放到硬盘上,是一种传统,也是一种哲学。

操作系统也经常把一些内存放到硬盘里,「微软」管它叫「虚拟内存」。

最后回答作者的问题:如何禁用本地缓存?没必要。

我非要禁用。

  1. 设置为只读
  2. 在 IE 的设置里面应该可以禁用
  3. 修改注册表

按照补充,给出我的看法:

在这种环境下,你需要的肯定是一个需要客户端配合的程序,用来对浏览器的行为进行修改,而不是单纯在服务器端进行开发。

如果简单点考虑,你可以为浏览器开发插件,用来修改和约束浏览器的缓存行为。然后在服务器端上,要求只有安装了你的插件才能提供内容。但这种方法仍然有被HTTP抓包的风险。内贼难防,千万不要认为一定程度的安全就够用了。

我觉得比较好的方案是直接放弃Web应用这个架构,而用客户端软件去替代之。内容格式上,也放弃flash,而只是简单的传输带水印的中低分辨率图像。在网络传输上,引入不对称加密。这样只要服务器的私钥不泄露,可以说固若金汤,任何人都拿不到印刷质量的文件原文。

但这仍然防止不了截屏、录像、拍照,甚至更简单点:人肉记忆等种种原因造成的数据泄露。这些方式我不多解释,就认栽吧。


感谢邀请。的确,正面对抗缓存系统,妄图更改所有用户的浏览器设置,确实是件荒谬的事情。但这件事并非没有变通的方法。

有个细节,就是带有POST数据的HTTP请求,一般而言是不缓存的。RFC 2616的9.5 POST一节,有如下的注释:

Responses to this method are not cacheable, unless the response includes appropriate Cache-Control or Expires header fields. However, the 303 (See Other) response can be used to direct the user agent to retrieve a cacheable resource.

其实也很容易理解:POST都是大量数据,浏览器缓存不起,也检索不起。

这样,方法就很简单了:主网页载入一个空框架,提交一个带POST数据的AJAX请求载入实质性的数据就行了。服务器端的那些缓存参数还可以照用。

但注意:这只是在一般情况,使得浏览器并不中长期保留这些内容。并不是说保证浏览器就一定不缓存这些内容,毕竟客户端的行为是你所不能控制的。尤其是为性能起见,在短时间内做的高速缓存,这个只要存在就几乎没有对抗的可能。


不过,更重要的是,我很想知道你如此处心积虑与浏览器本地缓存作对的理由。

数据保密?可是只要面对的是浏览器环境,你的传输和网页内容被截获、复制、分析、污染,只要用户愿意就没什么做不到的。(这个你需要的是一个专用的服务器-客户端结构)

保证时效性?这完全不必非去禁用客户端的本地缓存。

我猜不透你这个问题的目的。所以我建议你补充一下你的应用环境,和你期望的目的供大家参考。而不是认死了一个技术目标不放。

网易云课堂里面那个获取视频文件的链接在firefox中的response headers内容如下:

页面缓存 - PHP中如何禁用用户本地浏览器缓存?

我用IE浏览器播放,在本地缓存(临时)文件夹中没有找到对应的视频文件的,我猜测是应该服务器端做了处理

这个问题的本质需求是在浏览器里面做文档安全,我知道的有几种做法:
1、在IE中使用控件,可以很好的控制office文档的权限,可以先看看NTKO的资料。
2、转换为FALSH的格式,好像控制每次从服务器上获取一页的内容,这样的话大大提高了拿走文件的难度。

说一个相关的非技术问题:

录屏软件!

只要是静态资源,浏览器在加载的过程中,总是会“暂存”。或者换句话说,我通过firebug,或者查看源代码,都可以拿到你的路径,直接下载就完了。你想的控制浏览器缓存的思路也许该换换。

@adam 的说法可能是通行的做法。类似的,在线的文档阅读器,Flash的角色是一个播放器/阅读器,同时为了安全考虑,Flash中内置了加解密或叫编码算法。阅读文档时,Flash接受参数,由Flash动态的向服务器发送请求读取数据,一次加载一页或几页,经过解码最终展现出来。在这个过程中,用户浏览器缓存的只是Flash本身,没有数据。

例如:http://www.docin.com/p-562081174.html

<code><embed type="application/x-shockwave-flash" src="http://pics.wanlibo.com/players/DocinViewer.swf?rand=20130829" width="100%" height="100%" style="undefined" id="player" name="player" quality="high" align="middle" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" flashvars="productId=562081174&channel=0&loadurl=docin.oss.aliyuncs.com&aid=5&sgid1=1&sgid4=4&sgid3=3">
</embed></code>

他载入的数据是:http://docin.oss.aliyuncs.com/docin_562081174.docin

这个数据文件当然是加密的。

PS. 写在最后,我的答案可能文不对题,你是想要在现有的东西上解决问题。我是提出了另外的实现方式,实现还是有成本的。

你这种情况是不可能禁止通用浏览器(IE、Chrome、Firefox之类)缓存swf文件的,除非你开发定制版浏览器,或者开发一种新格式,用你特殊的插件播放。

要实现保密需求,可以用以下几个方面着手:

  • 流式播放,像各大视频网站一样,内容实际是在服务器端的,一段一段发送给浏览器端的,只在内存里,不在硬盘上。硬盘上的缓存文件只是个swf格式的播放器(player.swf)
  • 用php动态生成swf文件,文件里嵌入一个唯一标识码,绑定访问者的身份(如工号、内网IP、登录名),你缓存了不要紧,要是拿出去干坏事,那就能追查到泄密的源头在哪
  • 给每个swf套个壳(壳也是actionscript开发的swf),壳负责通过HTTP与服务器端交互,获取必要的授权才播放后面的office文档。与服务器端的授权交互可以让观看者参与(比如用账号登录),也可以不要求参与(比如验证IP,只有在内网才能播放)。如果有人把它拿回家,在请求服务器授权时就失败了
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP:服務器端腳本語言的簡介PHP:服務器端腳本語言的簡介Apr 16, 2025 am 12:18 AM

PHP是一種服務器端腳本語言,用於動態網頁開發和服務器端應用程序。 1.PHP是一種解釋型語言,無需編譯,適合快速開發。 2.PHP代碼嵌入HTML中,易於網頁開發。 3.PHP處理服務器端邏輯,生成HTML輸出,支持用戶交互和數據處理。 4.PHP可與數據庫交互,處理表單提交,執行服務器端任務。

PHP和網絡:探索其長期影響PHP和網絡:探索其長期影響Apr 16, 2025 am 12:17 AM

PHP在過去幾十年中塑造了網絡,並將繼續在Web開發中扮演重要角色。 1)PHP起源於1994年,因其易用性和與MySQL的無縫集成成為開發者首選。 2)其核心功能包括生成動態內容和與數據庫的集成,使得網站能夠實時更新和個性化展示。 3)PHP的廣泛應用和生態系統推動了其長期影響,但也面臨版本更新和安全性挑戰。 4)近年來的性能改進,如PHP7的發布,使其能與現代語言競爭。 5)未來,PHP需應對容器化、微服務等新挑戰,但其靈活性和活躍社區使其具備適應能力。

為什麼要使用PHP?解釋的優點和好處為什麼要使用PHP?解釋的優點和好處Apr 16, 2025 am 12:16 AM

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

揭穿神話:PHP真的是一種死語嗎?揭穿神話:PHP真的是一種死語嗎?Apr 16, 2025 am 12:15 AM

PHP沒有死。 1)PHP社區積極解決性能和安全問題,PHP7.x提升了性能。 2)PHP適合現代Web開發,廣泛用於大型網站。 3)PHP易學且服務器表現出色,但類型系統不如靜態語言嚴格。 4)PHP在內容管理和電商領域仍重要,生態系統不斷進化。 5)通過OPcache和APC等優化性能,使用OOP和設計模式提升代碼質量。

PHP與Python辯論:哪個更好?PHP與Python辯論:哪個更好?Apr 16, 2025 am 12:03 AM

PHP和Python各有優劣,選擇取決於項目需求。 1)PHP適合Web開發,易學,社區資源豐富,但語法不夠現代,性能和安全性需注意。 2)Python適用於數據科學和機器學習,語法簡潔,易學,但執行速度和內存管理有瓶頸。

PHP的目的:構建動態網站PHP的目的:構建動態網站Apr 15, 2025 am 12:18 AM

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP:處理數據庫和服務器端邏輯PHP:處理數據庫和服務器端邏輯Apr 15, 2025 am 12:15 AM

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

您如何防止PHP中的SQL注入? (準備的陳述,PDO)您如何防止PHP中的SQL注入? (準備的陳述,PDO)Apr 15, 2025 am 12:15 AM

在PHP中使用預處理語句和PDO可以有效防範SQL注入攻擊。 1)使用PDO連接數據庫並設置錯誤模式。 2)通過prepare方法創建預處理語句,使用佔位符和execute方法傳遞數據。 3)處理查詢結果並確保代碼的安全性和性能。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具