跨站指令碼攻擊(cross site scripting),為不和層疊樣式表(cascading style sheets, css)的縮寫混淆,故將跨站指令碼攻擊縮寫為xss。惡意攻擊者往web頁面裡插入惡意script(php,js等)**,當使用者瀏覽該頁之時,嵌入其中web裡面的script**會被執行,從而達到惡意攻擊使用者的特殊目的。
攻擊例項
下面為乙個input標籤:
當用輸入值為" οnfοcus="alert(document.cookie) 時,input標籤內容變為
當input中的可以執行的js指令碼被儲存到資料庫中。使用者再次取出顯示時。就會取到使用者的cookie。從而得到使用者名稱和密碼。
(1)新增使用者
(2)資料庫中儲存可執行指令碼
(3)編輯使用者(xss攻擊發生)
攻擊危害
以上獲取使用者名稱和密碼只是個簡單的xss攻擊,還有跟多的xss攻擊例項。例如將使用者導航到其他**,後台掛馬操作等
攻擊預防
原理:主要採用過濾器對請求中的特殊字元進行編碼轉化。從而將可以執行的script**變為不可以執行的script指令碼儲存到資料庫中。
示例:開發環境採用的ssh框架。所以採用過濾器,注意這裡採用裝飾者模式對請求request物件進行了包裝。
具體**:
1 public class xssfilter implementsfilter 6
13 public void init(filterconfig arg0) throwsservletexception 16
17 }
9 * 獲取最原始的request10 *@return
16 * 獲取最原始的request的靜態方法17 *@return
18 */
26 * 覆蓋getparameter方法,將引數名和引數值都做xss過濾。
27 * 如果需要獲得原始的值,則通過super.getparametervalues(name)來獲取
28 * getparameternames,getparametervalues和getparametermap也可能需要覆蓋29 */
30 @override31 publicstring getparameter(string name) 36 returnvalue;37 }38
39 /**
40 * 覆蓋getheader方法,將引數名和引數值都做xss過濾。
41 * 如果需要獲得原始的值,則通過super.getheaders(name)來獲取
42 * getheadernames 也可能需要覆蓋43 */
44 @override45 publicstring getheader(string name) 50 returnvalue;51 }52 /**
53 * 覆蓋getparamtermap方法,54 */
55 @override56 @suppresswarnings("unchecked")57 public mapgetparametermap() 67 }68 returnparammap ;69 }70 publicstring xssencode(string source)74 string html = "";75 stringbuffer buffer = newstringbuffer();76 for (int i = 0; i < source.length(); i++)
結果:資料中內容將英文的「變為全形" 。從而將可以執行的js指令碼並未不可執行的指令碼儲存在資料庫中。
CSRF攻擊及預防
參考部落格 csrf攻擊方式 csrf 攻擊的應對之道 csrf cross site request forgery 中文名稱 跨站請求偽造,也被稱為 one click attack session riding,縮寫為 csrf xsrf。你這可以這麼理解csrf攻擊 攻擊者盜用了你的身份,以...
有效預防黑客DDoS攻擊的技巧
分布式拒絕服務攻擊 ddos distributed denial of service 攻擊指借助於客戶 伺服器技術,將多個計算機聯合起來作為攻擊平台,對乙個或多個目標發動ddos攻擊,從而成倍地提高拒絕服務攻擊的威力。通常,攻擊者使用乙個偷竊帳號將ddos主控程式安裝在乙個計算機上,在乙個設定的...
SYN 攻擊 常識 預防
syn攻擊 windows系統開放tcp 139埠 unix系統開放 tcp7 tcp21,tcp23等埠 syn攻擊特點 系統自帶的 netstat工具 檢測 syn 攻擊 unix系統 netstat n p tcp 命令列 如果很多連線處於syn recv 狀態特別是源ip位址是隨機的 win...