系統設計和安全評審模式

1 是否針對金額,狀態等核心參數進行嚴格的一致性覈對


2 加解密方式是否合理,是否足夠安全,key?md5?公私鑰?


3 是否存在性能問題,容量評估如何,是否合理的使用了cache,是否選用了合理的網絡通訊模型或者中間件


4 如果涉及多個服務間的調用,如何保障不同系統接口調用的一致性,出現差錯事如何處理


5 接口是否支持重入,所有的敏感操作是否根據唯一的單來保障狀態的變遷,是否存在多次處理的可能。


6 業務或者接口上是否存在防刷機制


7 如果涉及多個系統,是否有對賬機制來保障系統間的一致性


8 服務或者接口是否有自我保護機制(超時,重連,告警,頻率限制,自殺機制等)


9 服務是有狀態還是無狀態,是否存在單點問題


10 如果涉及事務,事務的順序是否一致,是否存在死鎖問題。亦需考慮頻繁鎖對系統性能的影響。


11 模塊設計是否做到了快慢分離,核心非核心分離(比如交易和查詢)


12 狀態變遷是否嚴格校驗(必須校驗前置狀態)。不同的CGI或者服務之間跳轉時,如何保障不被人截斷和篡改。


13 對於支付類服務,是否做到了接口的原子化。 對於查詢類服務,是否做到了與帳號關係綁定,不能夠查詢到非登錄帳號相關的訊息。


14 對於敏感的數據和接口,是否已做服務後置(後臺服務,防火牆保護),是否已做了隔離(避免單一途徑獲取所有的資源,分而治之),是否形成互相制約的閉環。


15 系統的處理方式是否合理,批量?實時?是否對現有系統有所衝擊。


16 新引入的數據庫操作是否合理?是否使用了合適的索引?正確的條件?是否存在不合理的慢查詢?


17 如何涉及web層,如CGI的參數傳遞,必須確保關鍵信息的防篡改型(加密或簽名),嚴禁出現修改請求串就可以完成後臺接口調用的CGI出現。敏感操作或交易接口必須加密。


18 web層的接口調用,如果涉及敏感操作,必須確保必要的安全措施是否已添加到關鍵路徑,如風控調用,數字證書驗證,甚至手機驗證碼驗證。


19 加密的信息不能出現在任何的日誌或SQL中,不能夠依賴SQL進行加密。必須使用可靠的加密算法如RSA等。


20 涉及與外部系統的交互時,涉及唯一交易主體(卡號,協議號)就可以交易的,相當於無密。這種情況對這些信息必須加密,同時也必須具備防篡改機制。   及時被人篡改了,也必須有對賬機制能夠及時發現這個問題。


21 對於查詢接口,敏感的訊息也必須加密,同時也必須進行強制一致性檢查。不允許出現可以通過組串或者發包等方式,查詢到非本人的或者非授權的訊息。


22 涉及敏感的交易流程,避免通過判斷記錄的有無來決定關鍵流程。如果一定要出現,必須考慮到歷史記錄清理的風險,並進行規避。


23 對於非關鍵服務,需建立超時N次後,自動關閉連接的機制。避免每次都超時,引發雪崩效應,造成服務的不可用。


24 使用線程鎖時,注意如果是相同的程序cp了多份實例,有可能會造成不同進程相互鎖定的問題。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章