XSS,跨站腳本攻擊。html
在接受不肯定輸入內容(如第三方站點消息,URL參數,用戶建立的文本批註等)時,在使用前對數據進行驗證而且在展現時進行適當的編碼是必不可少的,不然,可能會有惡意用戶對網站進行攻擊,輕者只是傳遞不規範的數據,嚴重的可能攻擊服務器,擾亂網站正常運行,如,注入SQL腳本清除服務器上全部數據等。跨域
一般編寫過濾器驗證用戶輸入時,過濾器應該是基於白名單(已知的安全結構)配置編寫,容許白名單經過,不容許其餘輸入;而基於黑名單(已知的不安全結構)配置編寫,即容許除了黑名單以外的全部輸入,是不安全的,由於還有許多未知的不安全事物。安全
一般咱們根據URL中的指定參數,返回給用戶不一樣頁面,提供給用戶以下導航:服務器
<ul> <li><a href="blog.jhss.com?id=Home">Home</a> <li><a href="blog.jhss.com??id=About">About Site</a> <li><a href="blog.jhss.com??id=Account">My Account</a> </ul>
如上,若以上URL沒有編碼直接展現給用戶,惡意攻擊者能夠截斷URL並插入一個script
元素:函數
http://blog.jhss.com/?id=%3Cscript%3Ealert%28%27Oh%20no%21%27%29%3C/script%3E
若其餘用戶訪問這個URL頁面,則會執行注入的script標籤內的任意腳本,惡意者能夠指定惡意代碼,竊取用戶信息。網站
還有不少方式被用來欺騙站點執行注入的代碼,以下是咱們應該考慮的方面:編碼
<img>
元素,若是容許使用onload
屬性,則攻擊者可使用onload
屬性添加回調函數執行任意指定代碼。<base>
元素時,意味着當前頁面全部<script>
元素指向的相對地址都會被<base>
指定的值攔截,而且頁面中全部的表單提交都會被重定向到惡意站點。CSRF(Cross-site request forgery跨站請求僞造,也被稱爲「One Click Attack」或者Session Riding,一般縮寫爲 CSRF或者 XSRF,是一種對網站的惡意利用。儘管聽起來像跨站腳本( XSS),但它與XSS很是不一樣,而且攻擊方式幾乎相左。XSS利用站點內的信任用戶,而 CSRF則經過假裝來自受信任用戶的請求來利用受信任的網站。與 XSS攻擊相比, CSRF攻擊每每不大流行(所以對其進行防範的資源也至關稀少)和難以防範,因此被認爲比 XSS更具危險性。
若站點容許用戶提交表單,如申請修改密碼,進行購物結算等,就必須肯定該次請求是用戶主動發起,而不是別的站點誘騙用戶進行請求的,這個問題是由於HTML
中表單是容許跨域提交的。code
站點爲了防止這類攻擊,主要能夠從兩方面進行:htm
tokens
)Origin
頭,即請求來源提供用戶界面給用戶操做,支持用戶進行交互的頁面,有時候惡意者會誘騙用戶激活某些動做,而後對點擊的連接進行劫持,引導到惡意網站,進行某些危險交互,這也是咱們須要關注的。對象
要避免這些狀況,對於一些不須要展現在frame
窗口內的站點,只容許不在frame
窗口時才展現用戶界面,如經過檢測window
對象及其top
屬性值。
原文連接: HTML應用安全