彻底避免xss攻击的方法。

别人可以通过注入js脚本获取你的session cookie,如果幸运的话还可以获取通过js遍历你的dom树获取你的用户的用户名和密码。

如果只是通过正则表达式验证输入的话,各大富文本编辑器总还是可能出现各种漏洞,这样下去是很难达到万无一失的程度的。不过还好有个http头

可以禁用js访问cookie,这个就叫做http only cookie.有此http头,xss漏洞就可以彻底歇菜 了。。

以下转自:http://blog.sina.com.cn/s/blog_539f058a01013rea.html

一般扫描报告等级定为低危,如appscan。

一般的Cookie都是从document对象中获得的,现在浏览器在设置 Cookie的时候一般都接受一个叫做HttpOnly的参数,跟domain等其他参数一样,一旦这个HttpOnly被设置,你在浏览器的 document对象中就看不到Cookie了,而浏览器在浏览的时候不受任何影响,因为Cookie会被放在浏览器头中发送出去(包括ajax的时候),应用程序也一般不会在js里操作这些敏感Cookie的,对于一些敏感的Cookie我们采用HttpOnly,对于一些需要在应用程序中用js操作的cookie我们就不予设置,这样就保障了Cookie信息的安全也保证了应用。

Secure和HttpOnly:

Secure属性:

当设置为true时,表示创建的 Cookie 会被以安全的形式向服务器传输,也就是只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以不会被窃取到Cookie 的具体内容。

HttpOnly属性:

如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。

在Java的Web容器中设置该属性:

在Java的web应用里,我们要保护的有JSESSIONID这个cookie,因为类似于tomact的容器就是用这个cookie来辨别你的服务器端会话的。所以这个cookie是不应该由客户端脚本来操作的,它很适合用HttpOnly来标识它。

在tomcat6之前只能按照如下方法设置HttpOnly:

String sessionid = request.getSession().getId(); response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; HttpOnly");

对于tomcat6支持对JSESSIONID的cookie设置HttpOnly, 具体的设置是在context.xml配置文件中进行设置的,为Context标签添加如下属性即可开启或禁止HttpOnly:

<Context path="" docBase="D:/WORKDIR/oschina/webapp" reloadable="false"useHttpOnly="true"/>

也可以在 web.xml 配置如下: <session-config>  <cookie-config>   <http-only>true</http-only>  </cookie-config> </session-config>

 对于weblogic,可以在weblogic.xml里添加 <session-descriptor> <cookie-http-only>false</cookie-http-only> </session-descriptor> 但由于weblogic的版本的不同,weblogic.xml的对该参数的支持也不太一样 已知的如下: 这是10.3.3的有关weblgic_xml的定义 http://download.oracle.com/docs/cd/E14571_01/web.1111/e13712/weblogic_xml.htm#i1071981 这是10.3.1和10.3.2的有关weblgic_xml的定义 http://download.oracle.com/docs/cd/E15523_01/web.1111/e13712/weblogic_xml.htm#i1071981

可以看出weblogic在10.3.3中支持在weblogic.xml里配置 <session-descriptor> <cookie-http-only>false</cookie-http-only> </session-descriptor>

经过进一步查看10.3.4和10.3.5中都支持该参数的配置 而9.2版本也支持该参数的配置 如下路径http://download.oracle.com/docs/cd/E13222_01/wls/docs92/webapp/weblogic_xml.html#wp1071982 所以好像这个参数出现的版本不太固定

相关路径: http://www.iteye.com/topic/1114228 http://download.oracle.com/docs/cd/E13222_01/wls/docs92/webapp/weblogic_xml.html

http://serverfault.com/questions/151107/http-only-cookies-in-weblogic-what-versions-support-them-how-and-why-are-they-su

http://cn.forums.oracle.com/forums/thread.jspa?threadID=1518073

http://cn.forums.oracle.com/forums/thread.jspa?threadID=953056

对于 .NET 2.0 应用可以在 web.config 的 system.web/httpCookies 元素使用如下配置来启用 HttpOnly
1 <httpCookies httpOnlyCookies="true" …>
 
而程序的处理方式如下: C#:
1 HttpCookie myCookie = new HttpCookie("myCookie");
 
2 myCookie.HttpOnly = true;
 
3 Response.AppendCookie(myCookie);
 
VB.NET:
1 Dim myCookie As HttpCookie = new HttpCookie("myCookie")
 
2 myCookie.HttpOnly = True
 
3 Response.AppendCookie(myCookie)
 
.NET 1.1 只能手工处理:
1 Response.Cookies[cookie].Path += ";HttpOnly";
 
PHP 从 5.2.0 版本开始就支持 HttpOnly
1 session.cookie_httponly = True

【转】HTTP-only Cookie 脚本获取JSESSIONID的方法的更多相关文章

  1. js读取cookie 根据cookie名称获取值的方法

    //方法1 //存在问题:如果cookie中存在 aaaname=aa;name=bb 获取name的值就会出现错误function getCookie(c_name){ if (document.c ...

  2. 怎样指定当前cookie不能通过js脚本获取

    所谓" 不能通过js脚本获取 " 主要指的是: 使用document.cookie / XMLHttpRequest对象 / Request API 等无法获取到当前cookie. ...

  3. Jmeter中动态获取jsessionid来登录

    Jmeter中很多请求的url里会包含jsessionid,如 http://www.xxx.com/xxx_app;jsessionid=xxxxxxxxxx?a=x&b=x.jsessio ...

  4. 浅谈 php 采用curl 函数库获取网页 cookie 和 带着cookie去访问 网页的方法!!!!

    由于近段时间帮朋友开发一个能够查询正方教务系统的微信公众平台号.有所收获.这里总结下个人经验. 开讲前,先吐槽一下新浪云服务器,一个程序里的   同一个函数  在PC测试可以正常运行,在它那里就会挂的 ...

  5. 在 shell 脚本获取 ip、数字转换等网络操作

    在 shell 脚本获取 ip.数字转换等网络操作 ip 和数字的相互转换 ip转换为数字 :: function ip2num() { local ip=$1 local a=$(echo $ip ...

  6. linux c程序中获取shell脚本输出的实现方法

    linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...

  7. shell脚本获取mysql插入数据自增长id的值

    shell脚本获取mysql插入数据自增长id的值 在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否 ...

  8. Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥。

    Python 通过脚本获取Android的apk的部分属性,再通过加密算法生成秘钥. #!/usr/bin/env python # -*- coding: utf- -*- import os im ...

  9. 设置cookie,获取cookie,删除cookie,修改cookie

    怎么设置cookie,怎么设置cookie以及删除cookie和cookie详解 在操作cookie之前,先来看一下cookie长什么样. 可以看到,cookie是一个个键值对(“键=值”的形式)加上 ...

随机推荐

  1. 如何为不定高度(height:auto)的元素添加CSS3 transition-property:height 动画

    但一个元素不设置height时,它的默认值是 auto,浏览器会计算出实际的高度. 但如果想给一个 height:auto 的块级元素的高度添加 CSS3 动画时,该怎么办呢? 从 MDN 的可以查到 ...

  2. Charles 应用

    1.首先设置本机host文件,将需要测试的域名指向127.0.0.1:(测试域名没有代理,才会这么操作): 2.打开Charles,设置Proxy选项,取消“Windows Proxy”选中状态: 3 ...

  3. C语言中关于float和double的输入输出格式

    1.对于double类型,输入格式为scanf("%lf %lf", &foo, &bar); 对于float类型,输入格式为scanf("%f %f, ...

  4. 设置WinForm窗体及程序图标

    自己留着看,总是用的时候给忘记了,百度来百度去的麻烦. 设置 Ico 图标为 [资源文件] 项目名à右键à属性,在选项卡中选择"资源"   选择 "添加资源"à ...

  5. Sql Server 数据库之间如何进行跨网远程连接访问

    场景说明 现在有一台A电脑和一台B电脑,两台电脑都安装了Sql Server数据库,两台电脑不在一个局域网(我们考虑的是不同网络的两台数据库连接),比如A电脑在公司,B电脑在家里,现在我要在家里用B电 ...

  6. 15条JavaScript最佳实践很经典噢

    感觉比较经典,特转载腾讯大讲堂.本文档整理大部分公认的.或者少有争议的JavaScript良好书写规范(Best Practice).一些显而易见的常识就不再论述(比如要用对象支持识别判断,而不是浏览 ...

  7. CentOS7 固定ip

    1. 进入/etc/ network-scripts/ 下ifcfg-eno16777736(文件名可能不一样,单前缀一般是ifcfg-eno) 2. vi打开 编辑  修改bootproro=&qu ...

  8. TableViewCell自适应高度

    //初始化TableView时设置 self.tv.estimatedRowHeight=54;self.tv.rowHeight=UITableViewAutomaticDimension;

  9. dicom格式文件 界定标识符的处理

    转自:http://www.cnblogs.com/assassinx/archive/2013/05/18/3084854.html 说到底无非几个事情 :1传输语法确定 2数据元素读取 3 7fe ...

  10. 转: Python集合(set)类型的操作

    python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和 ...