Java 安全規(guī)約

2021-04-28 16:09 更新

\1. 【強(qiáng)制】隸屬于用戶個(gè)人的頁(yè)面或者功能必須進(jìn)行權(quán)限控制校驗(yàn)。

說(shuō)明:防止沒(méi)有做水平權(quán)限校驗(yàn)就可隨意訪問(wèn)、修改、刪除別人的數(shù)據(jù),比如查看他人的私信內(nèi)容。

\2. 【強(qiáng)制】用戶敏感數(shù)據(jù)禁止直接展示,必須對(duì)展示數(shù)據(jù)進(jìn)行脫敏。

說(shuō)明:中國(guó)大陸個(gè)人手機(jī)號(hào)碼顯示:139****1219,隱藏中間 4 位,防止隱私泄露。

\3. 【強(qiáng)制】用戶輸入的 SQL 參數(shù)嚴(yán)格使用參數(shù)綁定或者 METADATA 字段值限定,防止 SQL 注入,禁止字符串拼接 SQL 訪問(wèn)數(shù)據(jù)庫(kù)。

反例:某系統(tǒng)簽名大量被惡意修改,即是因?yàn)閷?duì)于危險(xiǎn)字符 # --沒(méi)有進(jìn)行轉(zhuǎn)義,導(dǎo)致數(shù)據(jù)庫(kù)更新時(shí),where 后邊的信息被注釋掉,對(duì)全庫(kù)進(jìn)行更新。

\4. 【強(qiáng)制】用戶請(qǐng)求傳入的任何參數(shù)必須做有效性驗(yàn)證。

說(shuō)明:忽略參數(shù)校驗(yàn)可能導(dǎo)致:

? page size 過(guò)大導(dǎo)致內(nèi)存溢出

? 惡意 order by 導(dǎo)致數(shù)據(jù)庫(kù)慢查詢

? 緩存擊穿

? SSRF

? 任意重定向

? SQL 注入,Shell 注入,反序列化注入

? 正則輸入源串拒絕服務(wù) ReDoS

Java 代碼用正則來(lái)驗(yàn)證客戶端的輸入,有些正則寫法驗(yàn)證普通用戶輸入沒(méi)有問(wèn)題,但是如果攻擊人員使用的是特殊構(gòu)造的字符串來(lái)驗(yàn)證,有可能導(dǎo)致死循環(huán)的結(jié)果。

\5. 【強(qiáng)制】禁止向 HTML 頁(yè)面輸出未經(jīng)安全過(guò)濾或未正確轉(zhuǎn)義的用戶數(shù)據(jù)。

\6. 【強(qiáng)制】表單、AJAX 提交必須執(zhí)行 CSRF 安全驗(yàn)證。

說(shuō)明:CSRF(Cross-site request forgery)跨站請(qǐng)求偽造是一類常見(jiàn)編程漏洞。對(duì)于存在 CSRF 漏洞的應(yīng)用/

網(wǎng)站,攻擊者可以事先構(gòu)造好 URL,只要受害者用戶一訪問(wèn),后臺(tái)便在用戶不知情的情況下對(duì)數(shù)據(jù)庫(kù)中用戶參數(shù)進(jìn)行相應(yīng)修改。

\7. 【強(qiáng)制】URL 外部重定向傳入的目標(biāo)地址必須執(zhí)行白名單過(guò)濾。

\8. 【強(qiáng)制】在使用平臺(tái)資源,譬如短信、郵件、電話、下單、支付,必須實(shí)現(xiàn)正確的防重放的機(jī)制,如數(shù)量限制、疲勞度控制、驗(yàn)證碼校驗(yàn),避免被濫刷而導(dǎo)致資損。

說(shuō)明:如注冊(cè)時(shí)發(fā)送驗(yàn)證碼到手機(jī),如果沒(méi)有限制次數(shù)和頻率,那么可以利用此功能騷擾到其它用戶,并造成短信平臺(tái)資源浪費(fèi)。

\9. 【推薦】發(fā)貼、評(píng)論、發(fā)送即時(shí)消息等用戶生成內(nèi)容的場(chǎng)景必須實(shí)現(xiàn)防刷、文本內(nèi)容違禁詞過(guò)濾等風(fēng)控策略。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)