WEB安全防範

1、Cookie的安全防範:

  • 存儲於cookie中的敏感數據必須加密。
  • 沒有特殊要求下,儘量使用會話cookie(非持久化)。
  • 如果使用持久化cookie應該設置cookie超時。
  • 激活cookie安全傳輸,表示創建的 cookie 只能在https連接中被瀏覽器傳遞到服務器端進行會話驗證,如果是http連接則不會傳遞該信息。
Cookie[] cookies = request.getCookies();

for(Cookie cookie : cookies) {

  if (…) {

      // 設置cookie不持久化到客戶端磁盤上

      cookie.setMaxAge(-1);

      // 設置cookie超時, 120秒

      cookie.setMaxAge(120);

      // 激活cookie安全傳輸

      cookie.setSecure(true);

      response.addCookie(cookie);

  }

}

2、必須設置session的超時時間。

web.xml中配置示例:

<session-config>

  <session-timeout>10</session-timeout>

</session-config>

3、必須構建統一的錯誤處理頁面。

web.xml示例:

<error-page>

  <error-code>500</error-code>

  <location>/error.jsp</location>

</error-page>

4、多線程中線程安全的防範:

  • 儘量少用靜態(static)變量和static方法。(除了靜態常量:static final constants)。
  • 儘量多線程框架(java.util.concurrent)構建多線程同步機制。
  • 使用ThreadLocal避免多個線程之間類成員的共享衝突。
  • 如非必要,不要使用synchronized關鍵字。必須要使用synchronized時,應將同步範圍最小化,即將同步作用到最需要的地方,避免大塊的同步塊或方法等。

5、增加Referer的檢查,防止非法訪問。

Referer是HTTP Header中的一個字段,當瀏覽器想服務器發送請求時,Referer用來通知服務器請求發起的位置。

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