一.xss
1.xss的定義
跨站指令碼攻擊(cross site scripting),縮寫為xss。惡意攻擊者往web頁面裡插入惡意script**,當使用者瀏覽該頁之時,嵌入其中web裡面的script**會被執行,從而達到惡意攻擊使用者的目的。
2. xss的攻擊方式
(1)反射型: 發出請求時,xss**出現在url中,作為輸入提交到伺服器端,伺服器端解析後響應,xss隨響應內容一起返回給瀏覽器,最後瀏覽器解析執行xss**,這個過程就像一次發射,所以叫反射型xss。
(2)儲存型: 儲存型xss和反射型的xss差別就在於,儲存型的xss提交的**會儲存在伺服器端(資料庫,記憶體,檔案系統等),下次請求目標頁面時不用再提交xss**。
( 3 )dom xss攻擊不同於反射型xss和儲存型xss,dom xss**不需要伺服器端的解析響應的直接參與,而是通過瀏覽器端的dom解析。這完全是客戶端的事情。
dom xss**的攻擊發生的可能在於我們編寫js**造成的。我們知道eval語句有乙個作用是將一段字串轉換為真正的js語句,因此在js中使用eval是很危險的事情,容易造成xss攻擊。避免使用eval語句。
3.xss危害
通過document.cookie盜取cookie
2.使用js或css破壞頁面正常的結構與樣式
3.流量劫持(通過訪問某段具有window.location.href定位到其他頁面)
4.dos攻擊:利用合理的客戶端請求來占用過多的伺服器資源,從而使合法使用者無法得到伺服器響應。
5.利用iframe、frame、xmlhttprequest或上述flash等方式,以(被攻擊)使用者的身份執行一些管理動作,或執行一些一般的如發微博、加好友、發私信等操作。
6.利用可被攻擊的域受到其他域信任的特點,以受信任**的身份請求一些平時不允許的操作,如進行不當的投票活動。
4.xss防禦
從以上的反射型和dom xss攻擊可以看出,我們不能原樣的將使用者輸入的資料直接存到伺服器,需要對資料進行一些處理。以上的**出現的一些問題如下
沒有過濾危險的dom節點。如具有執行指令碼能力的script, 具有顯示廣告和色情的img, 具有改變樣式的link, style, 具有內嵌頁面的iframe, frame等元素節點。
沒有過濾危險的屬性節點。如事件, style, src, href等
沒有對cookie設定httponly。
如果將以上三點都在渲染過程中過濾,那麼出現的xss攻擊的概率也就小很多。
解決方法如下
對cookie的保護
對重要的cookie設定httponly, 防止客戶端通過document.cookie讀取cookie。服務端可以設定此欄位。
使用者輸入資料的處理
編碼:不能對使用者輸入的內容都保持原樣,對使用者輸入的資料進行字元實體編碼。
解碼:原樣顯示內容的時候必須解碼,不然顯示不到內容了。
過濾:把輸入的一些不合法的東西都過濾掉,從而保證安全性。如移除使用者上傳的dom屬性,如onerror,移除使用者上傳的style節點,iframe, script節點等。
二.csrf
csrf 就是利用使用者的登入態發起惡意請求
如何防禦
通過 referer、token 或者 驗證碼 來檢測使用者提交。
避免全站通用的cookie,嚴格設定cookie的域.
阻止第三方**請求介面
對於使用者修改刪除等操作最好都使用post 操作 。
盡量不要在頁面的鏈結中暴露使用者隱私資訊。
前端安全問題 XSS和CSRF
xss又稱css,全稱crosssitescript,跨站指令碼攻擊,是web程式中常見的漏洞,xss屬於被動式且用於客戶端的攻擊方式,所以容易被忽略其危害性。其原理是攻擊者向有 xss漏洞的 中輸入 傳入 惡意的html 當其它使用者瀏覽該 時,這段html 會自動執行,從而達到攻擊的目的。如,盜...
面試 07 安全問題 CSRF和XSS
面試中的安全問題,明確來說,就兩個方面 這兩個問題,一般不會問太難。有人問 sql注入算嗎?答案 這個其實跟前端的關係不是很大。問的不難,一般問 如果把攻擊原理和防禦措施掌握好,基本沒什麼問題。csrf cross site request forgery 跨站請求偽造。ps 中文名一定要記住。英文...
前端面試 07 安全問題 CSRF和XSS
3.區別 1.基本概念 縮寫 全稱?csrf cross site request forgery,跨站請求偽造 2.攻擊原理 3.防禦措施 方法1 token to k n 驗證 1 伺服器傳送給客戶端乙個token 2 客戶端提交的表單中帶著這個token。3 如果這個 token 不合法,那麼...