Appscan漏洞 之 加密會話(SSL)Cookie 中缺乏 Secure 屬性

  近期 Appscan掃描出漏洞 加密會話(SSL)Cookie 中缺乏 Secure 屬性,已作修復,現進行總結以下:

1.一、攻擊原理

  任何以明文形式發送到服務器的 cookie、會話令牌或用戶憑證之類的信息均可能被竊取,並在稍後用於身份盜竊或用戶假裝,此外,若干隱私法規指出,用戶憑證之類的敏感信息要始終以加密的方式發送到 Web 站點。php

1.二、修復建議

  給cookie添加secure屬性web

1.三、修復代碼示例

  1)服務器配置爲HTTPS SSL方式服務器

  2)Servlet 3.0 (Java EE 6)的web.xml 進行以下配置:cookie

  <session-config>
   <cookie-config>
    <secure>true</secure>
   </cookie-config>
  </session-config>

  3)ASP.NET的Web.config中進行以下配置:session

   <httpCookies requireSSL="true" />

  4)php.ini中進行以下配置dom

  session.cookie_secure = True

  或者ui

  void session_set_cookie_params  ( int $lifetime  [, string $path  [, string $domain 
                                  [, bool $secure= false  [, bool $httponly= false  ]]]] )

  或者加密

  bool setcookie  ( string $name  [, string $value  [, int $expire= 0  [, string $path 
                 [, string $domain  [, bool $secure= false  [, bool $httponly= false  ]]]]]] )

  5)weblogic中進行以下配置:url

  <wls:session-descriptor> 
      <wls:cookie-secure>true</wls:cookie-secure>
       <wls:cookie-http-only>true</wls:cookie-http-only>
   </wls:session-descriptor>

1.四、其它資料

  https://www.owasp.org/index.php/SecureFlagspa

1.五、實際修復方案

  方案一:項目使用的是WebShpere服務器,這個能夠在服務器中進行設置: 

  其實這種修復方式和5.2修復建議2)給web.xml加配置的方式是同樣的。這兩種修復方式都是必定能夠經過Appscan掃描的,只不過19環境須要支持https和http兩種協議,以上兩種方案的話,會致使http協議下的Cookie不能傳輸,從而致使http協議下的部分功能不能使用。如今暫時是以犧牲http協議下的功能不使用爲代價以這種方案經過掃描的。

 

  方案二:

  若是給Cookie配置了secure屬性,那麼這個Cookie能在https協議中傳輸,可是不能在http協議中傳輸。而實際系統應用中要支持兩種協議,這裏能夠經過request.getScheme()獲取是哪一種協議(這種方式https協議獲取的也是http,奇怪,能夠經過下面的方式判斷是不是https協議)

  String url = req.getHeader("Referer");      

  if(url.startsWith("https")){}

  而後進行判斷是否加這個屬性:cookie.setSecure(true)。

  而這種方案的話,只能對後期本身代碼響應的Cookie作設置,而不能對容器自動響應的Cookie作設置。所以這裏沒有使用。

相關文章
相關標籤/搜索