我們常常在改 https 的時候會發現,css 跟 js 沒有調成 https:// 或 //
一些東西會沒有出來,正常 https 載 http (css js) 會失敗
但是 http 載入 https 也會失敗(Firefox)
簡單實驗
1 | <html> |
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)
1 | 被動型混合內容清單 |
主動型混合內容(mixed active content)
1 | 主動型混合內容示例 |
簡單來說
原本想說怎麼分可以載入根不可以載入,爬了一下文章,安全性比較小是可以取得到資源,危險信高的可能不能執行!!
1 | 現代瀏覽器 |
參考: 关于启用 HTTPS 的一些经验分享(一) | JerryQu 的小站
題外話 用 UserScript 方法
1 | unsafeWindow.document.body.innerHTML+='<iframe src="https://xxxxxxxx" width="640px" height="400px" frameborder="0" scrolling="no"></iframe>'; |
掃 混合內容(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 測試1
2
3
4
5
6<IfModule mod_headers.c>
Header set Content-Security-Policy " \
default-src 'self' xxxxxxx; \
img-src 'self' data:; \
"
</IfModule>
任意網站可以使用 default-src 'self' *
Content-Security-Policy - HTTP Headers 的資安議題 (2) | DEVCORE 戴夫寇爾
html
1 | <html> |
X-Frame-Options
iframe 所有 https 都能載入,不然不舊所有網站都可以任意被別的網站崁入?
在 header 加 X-Frame-Options 設定
就可以預防倒
Header always append X-Frame-Options SAMEORIGIN