有效預防xss XSS攻擊及預防

2021-10-13 11:38:26 字數 1787 閱讀 2519

跨站指令碼攻擊(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...