web的腳本安全-XSS

XSS,即Cross Site Scripting,叫X是由於以前有了一個CSS。中文能夠叫跨站腳本攻擊。是前端工程師的一大威脅。javascript

XSS的根本,就是有惡意用戶把代碼植入了你要訪問的頁面中,從而控制你訪問的頁面,最終目的是獲取你的信息css

1,代碼植入html

1)URL植入前端

惡人把構造好的URL,經過聊天工具或論壇或郵件等發佈出去,若是有人訪問這個URL,【或有觸發條件】攻擊就會執行。java

例如:http://126.com?frameurl=javascript%3Adocument.domain%20%3D%20%22126.com%22%3Balert%28parent.pagev%29%3Bvoid%280%29%3Bexpress

2)內容植入服務器

惡人把精心設計的內容保存到服務器,這些內容可能會被展現給別人看(例如我的博客的文章或暱稱),一旦別人查看,【或有觸發條件】攻擊就會執行。cookie

2,控制頁面的方式前端工程師

危險地帶,以下代碼的alert都可替換爲任何危險代碼,pagev爲頁面變量dom

1)html標籤屬性,例如:href,value,title,iframe.src等

例如iframe.src
document.getElementById("tiframe").src = "javascript:document.domain = \"126.com\";alert(parent.pagev);void(0);";

例如value屬性,個人名字是:myname" /> <script>alert(pagev)</script>
<input value="myname" /><script>alert(pagev)</script>

2)innerHTML

document.getElementById("tdiv").innerHTML = "<img src=\"xss.jpg\" onerror=\"alert(0)\"></img>";

 

3)script標籤

攻擊代碼在這裏???呵呵呵

 

4)document.write

攻擊代碼在這裏???呵呵呵

 

5)html標籤事件,例如:onclick或onerror等

6)expression

7)eval(str)或Function(str)()

等等,還有其餘

 

3,獲取信息

1)cookie值

2)輸入的內容(包括密碼)

3)頁面上的全部內容

4)本機IP

5)若是有信任的控件,那就能夠控制該控件,該控件能作的它也就能作。

6)其餘事件,例如惡搞或彈出廣告之類

 

4,防範方法

1,注入防範

注入防範是一項大工程,首先咱們要最大限度的限制用戶產生內容(來源於用戶輸入及修改URL),其次實在沒有辦法,須要評估影響進行轉碼或過濾。以下三個方法,可選擇使用。

1)轉碼

對特殊字符進行轉碼
轉碼包括HTML內容轉碼(針對innerHTML)、css屬性轉碼(style屬性)、事件處理轉碼、除事件處理和style屬性外的其餘屬性轉碼、script轉碼。

2)過濾

對特殊字符進行過濾,包括上面的各項內容。

3)規則限制

例如URL限制域名,例如輸入限制長度,例如使用規則引擎限定輸入的內容(如<p>字母</p>)。

4)一些有趣的東東(可直接運行)

'XSS'.replace(/XSS/g,alert);

 

2,信息保護

當已經注入了,居於虛假僞造的行爲(居於客戶端的行爲,例如構造form引導用戶輸入用戶名密碼)已經沒法阻止,但仍然能夠嘗試保護用戶在服務器的信息,防止經過獲取到的信息冒充用戶查看或修改用戶信息。但這些措施都只是增長攻擊難度,而不是終極武器。

1)只讀cookie

2)驗證客戶端IP(可能影響正經常使用戶)

 

 xss攻擊方法層出不窮,在有用戶輸入的狀況下,當心再當心。(本文會不定時更新,直至篇幅大到能夠新開一篇)

相關文章
相關標籤/搜索