委託案
地方政府服務入口網站
- Laravel
- TGOS 地圖 API
- CSP 資安設定
背景
公部門的服務入口網站,主要功能是讓民眾用地圖找到最近的服務據點,並且送出 線上申辦表單。案例名稱依合約保密原則略去,這裡只記錄技術上的取捨。
TGOS 地圖整合
政府網站的地圖底圖規定要用 TGOS(政府地理資訊圖資中心)提供的圖磚,不能 直接套用 Google Maps。串接方式跟一般地圖 API 落差不小,圖磚格式、座標系統 (TWD97)都要另外處理,前端用 Leaflet 搭配自訂的 TGOS tile layer,後端則 把常用的服務據點座標快取起來,避免每次都重新呼叫 TGOS 的查詢介面。
CSP 資安設定
公部門網站對資安規範要求較嚴,其中 Content-Security-Policy 是稽核時一定會
被檢查的項目。難點在於地圖圖磚、政府單一登入(SSO)的第三方腳本、還有表單
用到的驗證碼服務,各自需要不同的白名單網域,一開始 CSP 設太嚴會直接把地圖
封鎖掉。最後用 Laravel 的 middleware 依路由分別套用不同的 CSP 規則,地圖頁
放寬 img-src 與 connect-src 給 TGOS 網域,其餘頁面維持嚴格設定。
成果
網站上線後通過資安稽核,地圖查詢功能也沒有因為 CSP 設定被誤擋。這個案子 讓我對政府標案常見的資安規範(CSP、SSL Labs 等級、日誌保存規定)有了更具體 的實作經驗,之後接類似案子少走了很多冤枉路。