<a href="http://msdn.microsoft.com/zh-cn/library/ms994921.aspx">http://msdn.microsoft.com/zh-cn/library/ms994921.aspx</a>
列了設計,開發,部署Web應用程式的一些最佳實踐,有些是個人的心得體會,有些是通過資料得來的,比較簡單,給大家提個參考用。
恩,一切的前提還是你先保證網絡安全和主機安全,然後再考慮Web安全,不然白搭.....
1.實體網絡架構方面
在不同的主機上部署web server, app server, database server。
限制外界web server的連接配接,比如隻提供80端口。
限制web server與app server,database server之間的連接配接,比如使用防火牆或者作業系統或者軟體的配置。
不在web server上存儲機密的資訊,如果存儲,最好加密。比如其他server的帳号資訊。
2.認證
采用規範的認證方法,密碼,證書,活動密鑰,生物方式。如果你所在的公司有現成的認證接口或者認證産品,用這個,不要自己編。如果要求比較強烈,可以考慮多種認證方式并行。比如密碼+證書+活動密鑰
傳輸密碼時最好加密,存儲密碼時也最好加密。
設計密碼時滿足一定的強度,特别是管理者的帳号...
3.授權和通路控制
每個使用者滿足最小權限原則。
在邏輯層和資料層做通路控制,在表現層(網頁,flash檔案)做的通路控制對安全沒有實際用途
4.Session管理
各種中間件上的session管理已經很好了,不要随便自己編。(國内的應該沒有自己編的....)
session應該設定為一定時間内過期。
不要輕易設定為讓浏覽器固态存儲cookie
一個帳号最好隻允許一個使用者登入
不要在用戶端放置任何辨別使用者身份的資訊,隻信賴session id
5.連接配接資料庫
連接配接資料時應該使用最小權限的帳号(一上來就用sa的人最後因為sql注入死翹翹)
6.關鍵資料保護
對待關鍵資料要加倍小心,可以使用加密,差別對待的方法
7.日志
記錄日志吧,有條件的話,記得詳細點,特别是關鍵操作,再有條件的,對日志做個備份或者記在其他server上。
8.代碼編寫
使用的模闆,架構,技術本身有問題嗎?
在伺服器端做輸入過濾,用戶端的輸入過濾是無效的。過濾特殊字元,資料類型,資料長度。最好是隻接受合法輸入,而不是拒絕特殊情況。
說的太簡單了就比較空,光關于某一點都有很多可以說。恩,不管怎樣,給大家提供個參考吧,歡迎大家補充。
一個不錯的資源來自微軟:
<a href="http://msdn.microsoft.com/en-us/library/ms994921.aspx">http://msdn.microsoft.com/en-us/library/ms994921.aspx</a>
不光對于.NET架構的,對于其他web應用程式也有一定參考價值。