come from:tt安全 > 軟體開發安全 > 應用軟體開發最佳實踐
【techtarget中國原創】問:從安全的角度,你如何看待web應用程式開發中的帳號登出超時設定、快取以及其他最佳實踐的準則?
答:web應用程式必須通過建立會話來記錄使用者的請求,帳號的登出功能是活躍會話管理的乙個重要方面。你的應用程式應該為使用者提供一種方法途徑,例如在每個頁面上提供乙個退出按鈕或是鏈結,以便讓使用者退出帳號。另外,在一定時間內沒有登入的使用者應該被鎖定起來,直到再次登入。
這一時間長度應該根據你的使用者與web應用的互動方式以及資料的敏感程式來確定。例如,一些銀行**把超時時間定為10分鐘,其中乙個考慮的因素就是它們的使用者所訪問的都是非常敏感的資料。另外,由於「記住我(remember me)」這一選項能使超時設定失效,因此你的程式還應該禁用自動登入以及常連線(keep-alive)功能。
不幸的是,你對應用內容的客戶端快取的控制能力是非常有限的。如果不希望瀏覽器快取你的內容,那麼你可以通過設定響應報文裡的快取控制指令來影響客戶端的快取操作。如果你不希望瀏覽器快取你的網頁,把響應頭里的cache-control設為no-store就可以了。這一設定指示瀏覽器不要儲存對它的任何響應或請求。不過,no-cache和no-store是在http 1.1裡定義的,因此無法被http 1.0快取支援。此外,對於像pdf文件和excel**這樣的非html內容,即使上面這些標籤已經被設定了也往往會被快取。另一點需要引起重視的是,一些瀏覽器可以儲存使用者填寫的表單資料,這常常不安全。如果你的任何乙個web視窗採集敏感資訊,那一定加上autocomplete=false這一屬性來警告瀏覽器不要儲存資料。我之所以用「警告」這個詞,是因為這一屬性並不在html規範之內的。如果使用者所用的是共享的pc機,而且你認為你的程式處於高危險中,那就需要要求使用者清空瀏覽器的快取和歷史記錄。
同樣重要的是如果使用者退出或會話超時,要清空服務端的會話狀態,銷毀伺服器上的會話 ,還要把瀏覽器裡的會話cookie覆蓋掉,這是因為瀏覽器只有在它的執行緒實際終止了cookie之後才會把會話cookie刪除掉。這樣才能確保使用者超時或退出後無法發起會話重放式攻擊(session replay attack)。此外,url裡會話id也不應該出現,因為可能會被肩窺者(shoulder surfer)看到、被瀏覽器快取、還會被記錄到其它**的來路鏈結(referrer)裡。理想的情況下,使用者的整個會話,包括會話識別符號,都應該用ssl加密保護,這樣才能避免會話id被網路竊聽擷取。會話id應該是一長串隨機生成的複雜數字,而且應該在進行重要處理前,或使用了一定次數或時間後廢除並重新生成,特別是改用ssl後更應如此。最後,一定要把應用會話管理的目標和實現機制記錄下來,放到你的安全策略裡。
可靠會話最佳實踐
1 設定maxtransferwindowsize wcf中的可靠會話使用傳輸視窗儲存客戶端和服務上的訊息。可配置屬性 maxtransfer windowsize 指示傳輸視窗可以儲存多少條訊息。在傳送方,指示在等待確認訊息時傳輸視窗可以儲存多少條訊息,在接收方,則指示為服務緩衝多少條訊息。選擇合...
聊聊Web應用的會話管理
http連線是無狀態的,但web程式互動中經常又需要狀態。所以目前流行的基本是cookie,session結合方式來管理,cookie中會帶乙個會話標識,如果不用cookie,可能會將會話標識跟在位址列後面。但也有不通過session這樣方式的,使用自定義的方式來維護狀態。但有一點一定要注意,不能用...
Web會話管理
基於token的管理 重新整理安全問題 web應用通常使用的是http請求,但是http是無狀態的,一次請求結束,連線就會自動斷開,伺服器只能知道每個請求的 位址,可是這對會話的管理毫無意義。根本無法對使用者進行認證和許可權控制。於是,就有了相應的方案來解決這問題。常用的方法有三個 在早期的web應...