對瀏覽器 混合內容(mixed content)的認識
Contents
我們常常在改 https 的時候會發現,css 跟 js 沒有調成 https:// 或 //
一些東西會沒有出來,正常 https 載 http (css js) 會失敗
但是 http 載入 https 也會失敗(Firefox)
簡單實驗
|
|
http網頁 載 http js ,css (自動導 https)
順利執行
http 網頁 載 https js css
順利執行
Chrome 好像正常
但 Firefox 會有問題
https 網頁 載 http js css
已封鎖載入混和的主動內容「http://xxxx/css/reset.css」
https 網頁 載 https js css
順利執行
實驗簡單總結
簡單說 https 模式下 不能讀 http 東西,因為不被信任
可能會有網頁安全問題
最佳使用方法//xxxx/css/xxx.css
就不會有這個問題
混合內容(mixed content)
主動型混合有分兩種
- 被動/顯示型混合內容(mixed passive/display content)
- 主動型混合內容(mixed active content)
被動/顯示型混合內容(mixed passive/display content)
|
|
主動型混合內容(mixed active content)
|
|
簡單來說
原本想說怎麼分可以載入根不可以載入,爬了一下文章,安全性比較小是可以取得到資源,危險信高的可能不能執行!!
|
|
參考: 关于启用 HTTPS 的一些经验分享(一) | JerryQu 的小站
題外話 用 UserScript 方法
|
|
掃 混合內容(mixed content)工具
- HTTPS Checker Desktop App | HTTPS Checker
- GitHub - bramus/mixed-content-scan: Scan your HTTPS-enabled website for Mixed Content
讓內容能正常執行和預防方法
一開始我已為這跟 CROS 問題類似,但這個完全是不一樣的東西。
但有類似解決方法。使用 CSP
CSP
這個網頁講的很詳細 Content Security Policy (CSP) 筆記 - HackMD
可以簡單用 .htaccess 測試
|
|
任意網站可以使用 default-src 'self' *
Content-Security-Policy - HTTP Headers 的資安議題 (2) | DEVCORE 戴夫寇爾
html
|
|
X-Frame-Options
iframe 所有 https 都能載入,不然不舊所有網站都可以任意被別的網站崁入?
在 header 加 X-Frame-Options 設定
就可以預防倒
Header always append X-Frame-Options SAMEORIGIN
X-Frame-Options 回應標頭 - HTTP | MDN