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作设置。所以这里没有使用。

相关文章
相关标签/搜索