{eval=Array;=+count(Array);}
1.凡事涉及到用戶輸入操作的必須前后端檢驗(yàn),盡可能限制輸入的范圍,例如排除特殊字符
2. 數(shù)據(jù)庫(kù)必須只能內(nèi)網(wǎng)訪問(wèn),涉及到sql操作必須使用預(yù)編譯,防止sql直接提交到數(shù)據(jù)庫(kù),例如mybatis的#占位符,而不是$
3. 鑒權(quán):所有涉及到面向客戶的操作須鑒權(quán),防止出現(xiàn)暴力破解情況,核心接口可做訪問(wèn)統(tǒng)計(jì),限流控制,錯(cuò)誤信息個(gè)性化定制,不暴露內(nèi)部信息,一般使用內(nèi)部約定的錯(cuò)誤碼等形式
第一,項(xiàng)目分層處理!邏輯層和數(shù)據(jù)層嚴(yán)格分開(kāi),不要隨意暴露數(shù)據(jù)表結(jié)構(gòu)!
第二,對(duì)用戶輸入進(jìn)行驗(yàn)證,對(duì)客戶輸入的數(shù)據(jù)進(jìn)行參數(shù)化查詢!
1. 能不用sql語(yǔ)句就不用
比如很多orm 框架或庫(kù)都將sql語(yǔ)句操作隱藏起來(lái)了,你直接 new 一個(gè)對(duì)象,然后insert. 或 update. 從數(shù)據(jù)庫(kù)取出來(lái)也是一個(gè)對(duì)象。
2. 非要用sql,盡量用預(yù)編譯
預(yù)編譯的流程是先預(yù)編譯,然后綁定執(zhí)行。 綁定時(shí)不會(huì)發(fā)生直接執(zhí)行sql語(yǔ)句的注入問(wèn)題
3. 即使用非預(yù)編譯的sql 也有周邊工具防止注入
工具就自己找吧,多的是。如 java 的 mybatis 的 sql類,xml中的#{},go語(yǔ)言內(nèi)置庫(kù)中的多參數(shù) exec 方法等等
4
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答