Repository navigation
Yoya Portfolio v1.6.3
Yoya Portfolio v1.6.3
CSP Security Hardening:盤點正式站瀏覽器實際載入的外部資源,並用最小權限 Content Security Policy 限制未列入來源的 script、style、image、network、frame 與 media 載入。
- 確認 Runtime 沒有外部 web font、CDN JavaScript / CSS、fetch / XHR / SSE / WebSocket、iframe、影音或 worker;相關 CSP directive 預設直接封鎖。
- Hero GitHub 頭像是目前唯一第三方 Runtime resource,
img-src僅額外允許https://github.com與可能的 avatar redirecthttps://avatars.githubusercontent.com。 - 新增
apply_csp.py,在所有發布 HTML 的<head>前段自動加入 CSP meta;本機 CSS / JS / 圖片 / manifest 維持'self'。 - Inline JSON-LD 不使用
'unsafe-inline',而是在每個最終頁面依實際內容產生 SHA-256 allowlist;同時封鎖 inline event handler、inline style attribute 與'unsafe-eval'。 connect-src 'none'、frame-src 'none'、media-src 'none'、worker-src 'none'、object-src 'none',並啟用upgrade-insecure-requests。- 新增
check_csp.pybuild gate:未來若新增外部 script / stylesheet / image host、CSS import/url 或 JavaScript network API,CI 會要求先明確更新 CSP,而不是默默放寬default-src。 - 新增
docs/CSP.md,記錄 Runtime 資源清單、Build-time-only 外站擷取、實際 CSP 規則與部署後 Console 手動驗證方式。 - GitHub Pages 目前使用 CSP meta,因此
frame-ancestors無法由 meta 強制;若未來改由可設定 response headers 的 edge/proxy 提供服務,應在 HTTP CSP header 補上frame-ancestors 'none'。
Website: https://yoya9933.page/
Changelog: https://yoya9933.page/changelog/