關於web系統安全

web系統特點

1.分佈式,客戶端不確定

2.異步作業


安全問題

因爲是分佈式且強交互,而客戶端又不確定,理論上任何人可以發送任意數據到服務器。因爲除了我們自己的網頁,客戶端可以是任意人定製的任意的目的的html頁面,甚至是定製的HTTP客戶端。所以web服務器對客戶端完全不能信任。那麼怎麼安全處理任務呢?就一條,假設所有請求數據都是非法的,知道證明他是合法的。

比如,客戶端使用POST方法提交參數name,pwd。首先服務器要確保,客戶端提交的是這兩個字段,其次服務器要確保客戶端提交的這兩個參數值合法。那麼新 問題 來了,怎麼樣才叫值合法?

解決方法我想應該是這樣子的:

比如,假設服務器客戶端均使用UTF-8,

對於請求功能getsecclassify,有參數mainclassify,mainclassify的值必須滿足以下條件:

a.長度小於10個字符  

b.只能包含大小寫字母和數字

   這樣就把這個功能可能的參數限制死了。

那麼客戶端檢測一遍,服務器端也要檢測一遍。


所有服務器請求,必須有詳細的設計文檔,裏面規定好,都有什麼參數,參數什麼格式。這樣就可以把可能的參數數據限制死。這是一種白名單的解決方案,我不看你是不是非法的,我只看你是否合法。一切不滿足設計要求的通信參數,都不予以處理(在測試階段沒可以給個響應,非法數據提交)。這個文檔寫的有點像winsock通信協議了,我不知道web開發一般怎麼稱呼這個東西。
既然有通信協議了,就要有測試用例啊,驗證當前服務器是否實現了既定的驗證規則。也就是說,在寫設計文檔的時候,在寫通信功能文檔的時候沒,順手就要寫出對應的測試用例。


這樣,就能在一定程度上解決web系統安全問題了。總結一下,就是寫詳細設計文檔,規定參數細節,然後寫測試用例。開發時候,嚴格遵照設計文檔,進行參數檢查,然後再使用測試用例測試。

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