XSS攻击(Cross Site Scripting)中文名为跨站脚本攻击,XSS攻击
时web中一种常见的漏洞
。经过XSS漏洞能够伪造目标用户登陆
,从而获取登陆后的帐号操做。javascript
web网页中在用户登陆的时候,经过表单把用户输入的帐号密码进行后台数据库的验证,验证经过后利用session会话进行用户登陆后的判别是否登陆,在session的这个过程当中服务器会在服务器中写入一个文件并记录sessionid
,而后也会在浏览器中设置cookie
,保存sessionid
,服务器和客户端之间利用这个sessionid
进行通讯识别。若是客户端发送sessionid
给服务器服务器没有找到,则说明服务器中的这个文件已通过期删除了。那用户这边就须要从新登陆了。php
思路:经过获取目标用户登陆后的sessionid
,保存到本身的电脑,而后在本身的电脑上设置获取到的sessionid
进行帐号登陆后的操做。经过sessionid伪造请求登陆
,直接跳过帐号密码登陆操做就能进去。html
好比:java
给目标用户发送一个有吸引力的邮件,邮箱中包含一个连接,当用户点击连接跳转到一个伪造的页面,这个伪造的页面中包含了获取目标用户浏览器中cookie的javascript代码
,获取到cookie中的sessionid
后再传送到攻击者的服务器中;或者在站点中的可插入数据的地方进行在html中写行内的javascript代码执行操做(< IMG SRC="jav ascript:alert('XSS');" >;);还能够当在一个公共wifi环境下,进行可帐号登陆操做,wifi路由器的管理员能够经过抓包工具抓包直接抓包查看到你的sessionid,因此不要在公共wifi下进行敏感操做,是很不安全的。web
你们都知道,当咱们去邮箱或者论坛登录后,服务器会写一些cookie到咱们的浏览器,当下次再访问其余页面时,因为浏览器回自动传递cookie,这样 就实现了一次登录就能够看到全部须要登录后才能看到的内容。也就是说,实质上,全部的登录状态这些都是创建在cookie上的!假设咱们登录后的 cookie被人得到,那就会有暴露我的信息的危险!固然,想一想,其余人怎么能够得到客户的cookie?那必然是有不怀好意的人的程序在浏览器里运行! 若是是如今满天飞的流氓软件,那没有办法,httponly也不是用来解决这种状况的,它是用来解决浏览器里javascript访问cookie的问 题。试想,一个flash程序在你的浏览器里运行,就能够得到你的cookie的!
IE6的SP1里就带了对httponly的支持,因此相对还说仍是些安全性。数据库
PHP中的设置
PHP5.2以上版本已支持HttpOnly参数的设置,一样也支持全局的HttpOnly的设置,在php.ini中
-----------------------------------------------------
session.cookie_httponly =
-----------------------------------------------------
设置其值为1或者TRUE,来开启全局的Cookie的HttpOnly属性,固然也支持在代码中来开启:
-----------------------------------------------------
<?php
ini_set("session.cookie_httponly", 1);
// or
session_set_cookie_params(0, NULL, NULL, NULL, TRUE);
?>
-----------------------------------------------------
Cookie操做函数setcookie函数和setrawcookie函数也专门添加了第7个参数来作为HttpOnly的选项,开启方法为:
-------------------------------------------------------
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
setrawcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
-------------------------------------------------------
对于PHP5.1之前版本以及PHP4版本的话,则须要经过header函数来变通下了:
-------------------------------------------------------------
<?php
header("Set-Cookie: hidden=value; httpOnly");
?>
-------------------------------------------------------------