749
技術社區[雲棲]
阿裏巴巴 Java 開發手冊之安全規約(五)-------我的經驗(逐步完善中)
- 【強製】隸屬於用戶個人的頁麵或者功能必須進行權限控製校驗。 說明:防止沒有做水平權限校驗就可隨意訪問、修改、刪除別人的數據,比如查看他人的私信 內容、修改他人的訂單。
- 【強製】用戶敏感數據禁止直接展示,必須對展示數據脫敏。 說明:查看個人手機號碼會顯示成:158****9119,隱藏中間 4 位,防止隱私泄露。
- 【強製】用戶輸入的 SQL 參數嚴格使用參數綁定或者 METADATA 字段值限定,防止 SQL 注入, 禁止字符串拚接 SQL 訪問數據庫。
- 【強製】用戶請求傳入的任何參數必須做有效性驗證。 說明:忽略參數校驗可能導致: page size過大導致內存溢出 惡意order by導致數據庫慢查詢 任意重定向 SQL注入 反序列化注入 正則輸入源串拒絕服務ReDoS 說明:Java 代碼用正則來驗證客戶端的輸入,有些正則寫法驗證普通用戶輸入沒有問題, 但是如果攻擊人員使用的是特殊構造的字符串來驗證,有可能導致死循環的結果。
- 【強製】禁止向 HTML 頁麵輸出未經安全過濾或未正確轉義的用戶數據。
- 【強製】表單、AJAX 交必須執行 CSRF 安全過濾。 說明:CSRF(Cross-site request forgery)跨站請求偽造是一類常見編程漏洞。對於存在 CSRF 漏洞的應用/網站,攻擊者可以事先構造好 URL,隻要受害者用戶一訪問,後台便在用戶 不知情情況下對數據庫中用戶參數進行相應修改。
- 【強製】在使用平台資源,譬如短信、郵件、電話、下單、支付,必須實現正確的防重放限製, 如數量限製、疲勞度控製、驗證碼校驗,避免被濫刷、資損。 說明:如注冊時發送驗證碼到手機,如果沒有限製次數和頻率,那麼可以利用此功能騷擾到其 它用戶,並造成短信平台資源浪費。
- 【推薦】發貼、評論、發送即時消息等用戶生成內容的場景必須實現防刷、文本內容違禁詞過 濾等風控策略。
附 2:本規約專有名詞
1. POJO(Plain Ordinary Java Object):在本規約中,POJO 專指隻有 setter/getter/toString 的簡單類,包括 DO/DTO/BO/VO 等。
2. DO(Data Object):本手冊指數據庫表一一對應的 POJO 類。
3. GAV(GroupId、ArtifactctId、Version):Maven 坐標,是用來唯一標識 jar 包。
4. OOP(Object Oriented Programming): 本手冊泛指類、對象的編程處理方式。
5. ORM(Object Relation Mapping): 對象關係映射,對象領域模型與底層數據之間的轉換, 本文泛指 iBATIS, mybatis 等框架。
6. NPE(java.lang.NullPointerException): 空指針異常。
7. 一方庫:本工程內部子項目模塊依賴的庫(jar 包)。
8. 二方庫:公司內部發布到中央倉庫,可供公司內部依賴的庫(jar 包)。
9. 三方庫:公司之外的開源的依賴庫(jar 包)。
最後更新:2017-06-01 23:01:28