彻底避免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. 使 div 元素看上去像一个按钮

    使 div 元素看上去像一个按钮 div { appearance:button; -moz-appearance:button; /* Firefox */ -webkit-appearance:b ...

  2. php读取mysql中文数据出现乱码

    1.PHP页面语言本身的编码类型不合适,这时候,你直接在脚本中写的中文肯定是乱码,不用说数据库了:    解决方法:选择'UTF8'或者'gb2312',这样客户浏览器会自动选择并出现正确的中文显示. ...

  3. 【Linux C中文函数手册】之 目录操作函数

    目录操作函数 1)closedir 关闭目录 相关函数: opendir表头文件: #include<sys/types.h> #include<dirent.h>定义函数: ...

  4. Hadoop集群错误

    1.Hadoop集群所有的DataNode都启动不了解决办法 删除从节点.../usr/hadoop/tmp/dfs/ 下内容,再重新格式化namenode

  5. Mac下配置cocos2dx2.2.6的Android环境

    最近在学习cocos2dx在MAC上如何打包apk,今天先把安装JDK和ANT的过程记来. 首先,打开终端,输入”java -version” 点击回车后,出现如下提示: 我们的MAC上并没有安装过J ...

  6. 下拉框的选择跳转事件(jqure)

    <select id="coupontype"> <option value="@CouponType.全部" href="@Url ...

  7. 19款绚丽实用的jQuery/CSS3侧边栏菜单

    jQuery作为一款主流的JavaScript前端开发框架,深受广告开发者的亲睐,同时jQuery有着不计其数的插件,特别是菜单插件更为丰富,本文将要为大家介绍20个绚丽而实用的jQuery侧边栏菜单 ...

  8. 分享10款激发灵感的最新HTML5/CSS3应用

    1.HTML5/CSS3实现iOS Path菜单 菜单动画很酷 Path菜单相信大家都不陌生吧,它在iOS中非常流行,今天我们要分享的菜单就是利用HTML5和CSS3技术来模拟实现这款iOS Path ...

  9. Tables for condition techniques

    T682i  -- Access sequence and the tables   T685  -- Condition types and Access sequences   T683s  -- ...

  10. Silverlight 中DataGrid中全选与非全选问题

    问题:当点击全选时,全选所有的复选框,但是滚动屏幕时,却复选框就会取消选中 一.解决方法(将要展示的实体数据模型添加bool属性,在数据绑定时添加click时间,盘带选中的状态,就可以了) 1. xa ...