開發注意事項
在此提醒一些開始時注意事項
以下規則外包務必遵守
- 前台環境處理頁面跟串接第三方 API,不碰資料庫
- API 環境處理資料庫並跟前台環境串接
- 共用設定檔
- 前台環境:使用 Laravel 預設的 .env 檔
- API 環境:放在專案資料夾根目錄的 config.js
- 環境設定檔分 develop 跟 production,production debug 為 false
- API 資料庫連線程式統一一支檔案處理,其他檔案不要寫連接資料庫程式
- 敏感欄位加密(如會員姓名、手機、地址之類),密碼欄位使用不可逆加密(MD5、SHA1 不建議使用)
- 避免 SQL Injection
- 使用 prepared query
- 避免跨站腳本攻擊(Cross-Site Scripting, XSS)
- 過濾欄位參數傳入格式
- 輸出成 html 顯示給使用者時,用 htmlentities($var, ENT_QUOTES) 轉換特殊字元,Laravel 的 blade 模板中使用 {{ $var }} 即可
- 避免網頁回應表頭惡意切割(HTTP Response Header Splitting)
- 過濾 header 裡面的換行字元(%0d%0a 或 %0a)
- 避免竊取 cookie (cookie Hijacking)
- httponly flag 設定為 true,指定 cookie 不能被 javascript 存取
- secure flag 設定為 true,指定 cookie 只能透過 https 傳輸
- 避免跨站請求偽造(Cross-site request forgery)
- 表單加入 csrf token 驗證
- 程式不得植入後門
- 賣場、商品等不用登入的開放性頁面需放 SEO 必要欄位和 Facebook 的 Open Graph
- API 機制:
- API 架構:RESTful API
- GET:取得內容
- PUT:更新內容
- POST:建立內容
- DELETE:刪除內容
- API 驗證:JWT(Json Web Token)
- 社群相關認證:OAuth 2.0
- SSO:SAML 2.0
- SOAP:不採用
- API 架構:RESTful API
- 註解:
- 前端程式 JavaScript、CSS、HTML 不寫入具名的註解或開發時間或商業邏輯
- production 版本檔案必須 minify