safety-specifications
接入微信城市服務(wù),業(yè)務(wù)方需確保功能安全性。
常見安全檢查表
XSS
- 輸入校驗:長度限制、值類型是否正確、是否包含特殊字符(如<>’”等)
- 輸出編碼:根據(jù)輸出的位置進行相應(yīng)的編碼,如HTML編碼、JavaScript編碼、URL編碼。
- 輸出到HTML標簽之間時,對這些數(shù)據(jù)進行HTML Entity編碼
- 輸出到HTML屬性里時,特殊字符編碼為&#xHH
- 輸出到SCRIPT里時,對這些數(shù)據(jù)進行SCRIPT編碼,除了阿拉伯數(shù)字和字母,對其他所有的字符進行編碼,只要該字符的ASCII碼小于256。編碼后輸出的格式為\xHH
- 輸出到Style屬性里時,對這些數(shù)據(jù)進行CSS編碼,除了阿拉伯數(shù)字和字母,對其他所有的字符進行編碼,只要該字符的ASCII碼小于256。編碼后輸出的格式為\HH
- 輸出到HTML URL里時,對這些數(shù)據(jù)進行URL編碼,當需要往HTML頁面中的URL里插入不可信數(shù)據(jù)的時候,需要對其進行URL編碼
SQL注入
- 最佳方式就是使用預(yù)編譯語句,綁定變量
- 檢查數(shù)據(jù)類型
- 使用安全函數(shù),例如php的mysql_real_escape_string
- 從數(shù)據(jù)庫自身來說,應(yīng)使用最小權(quán)限原則,切記不要使用dba權(quán)限
上傳漏洞
- 在客戶端和服務(wù)器端對用戶上傳的文件名和文件路徑等項目分別進行嚴格的檢查,尤其是服務(wù)端檢測不能少
- 服務(wù)器端的檢查最好使用白名單過濾的方法,比如只允許jpg文件上傳等
- 上傳目標路徑盡量不在web目錄下,如果在web目錄下去掉該目錄的可執(zhí)行權(quán)限
- 慎用Fckeditor、ewebeditor等第三方上傳組件,歷史上曾出現(xiàn)多個漏洞
Struts2
歷史上Struts2框架出過多個高危漏洞,這些漏洞足以黑掉一個網(wǎng)站,要盡量使用最新版本
信息泄漏
- 線上機器刪掉測試頁面,例如test.html,phpinfo.php等
- 禁掉詳細的錯誤提示
- 禁止顯示調(diào)試信息
- 禁止將svn相關(guān)的文件更新到線上機器,例如.svn/entries
登錄安全
- 登錄頁面最好加入驗證碼
- 盡量使用https協(xié)議
會話安全
公眾號開發(fā)中通常將openid作為用戶身份標識,使用openid時要將openid設(shè)置到cookie中不要拼接到URL中例如http://www.qq.com/getuser?code=aaaaaa
管理頁面
Tomcat、jboss、weblogic等管理頁面可以做以下加個方面的安全策略
使用白名單的方式限制可以登錄的IP
如果不使用這些管理界面直接刪掉
平行權(quán)限問題
像訂單等場景需要格外注意平行權(quán)限問題,例如order?Id=111,是否order?Id=112就可以看到其他的訂單。對于這種情況的防御,可以加入校驗參數(shù),order?Id=111&sign=hash(字符串常量+id)
支付金額問題
- 涉及到微支付的web應(yīng)用一定要嚴格按照微信支付官方網(wǎng)站的文檔設(shè)計
- 確定用戶的支付金額與應(yīng)付金額是否相等
更多建議: