1、什麼是XSS
XSS又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁面裡插入惡意html代碼,當使用者浏覽該頁之時,嵌入當中Web裡面的html代碼會被運作,進而達到惡意使用者的特殊目的。XSS屬于被動式的攻擊,由于其被動且不好利用,是以很多人常呼略其危害性。
跨站腳本攻擊最大的魅力是通過HTML注入劫持使用者的浏覽器,随意構造使用者目前浏覽的HTML内容,甚至能夠模拟使用者目前的操作。
XSS 是怎樣發生的呢?
假如有以下一個textbox
<input type="text" name="address1" value="value1from">
value1from是來自使用者的輸入,假設使用者不是輸入value1from,而是輸入"/><script>alert(document.cookie)</script><!- 那麼就會變成
<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">
嵌入的JavaScript代碼将會被運作。
或者使用者輸入的是
"onfocus="alert(document.cookie) 那麼就會變成
<input type="text" name="address1" value="" onfocus="alert(document.cookie)">
事件被觸發的時候嵌入的JavaScript代碼将會被運作。
攻擊的威力,取決于使用者輸入了什麼樣的腳本。
XSS之是以會發生, 是由于使用者輸入的資料變成了代碼。 是以我們須要對使用者輸入的資料進行HTML Encode處理。 将當中的"中括号", “單引號”,“引號” 之類的特殊字元進行編碼。

XSS 漏洞修複
原則: 不相信客戶輸入的資料
注意: 攻擊代碼不一定在<script></script>中
- 将重要的cookie标記為http only, 這種話Javascript 中的document.cookie語句就不能擷取到cookie了.
- 僅僅同意使用者輸入我們期望的資料。 比如: 年齡的textbox中,僅僅同意使用者輸入數字。 而數字之外的字元都過濾掉。
- 對資料進行Html Encode 處理
- 過濾或移除特殊的Html标簽, 比如: <script>, <iframe> , < for <, > for >, " for
- 過濾JavaScript 事件的标簽。比如 "onclick=", "onfocus" 等等。
防止XSS,主要是:
一、使用者自己
使用者可以忽略一個站點到還有一個站點的連結:比方說,假設A站點連結到somerandomsite.com/page,那麼你假設先要上這個站點,最好不要去直接點選該連結,而是通過搜尋功能去查找該站點。這樣的方法可有效防止嵌入在連結網址中的XSS攻擊,可是這樣的方法用起來不太友善,并且當兩個站點共享内容時就沒辦法用了。第二種方法是在你的浏覽器中禁用像JavaScript腳本語言。即便是以可能會讓一些站點上的一些非常不錯的功能沒法使用,僅僅要你還可以容忍即可。
二、上面列出的五點。
2、sql注入攻擊
防止sql注入方法:
一、使用者注冊和登陸的時候輸入的username和password的時候禁止有特殊字元。
二、最小權限原則。
三、假設使用的是java,則盡量使用PreparedStatement
3、...