客戶端安全的基礎是同源策略,什麼是同源策略呢?就是限制了不一樣源的「document」或腳本,對當前「document」讀取或者設置屬性。有一點須要注意對於當前頁面來講頁面內存放JS的域並不重要,重要的是加載js頁面所在的域是什麼。例如在a.com下加載了<script src="b.com/b.js"></script>。可是b.js是運行在a.com頁面中的,因此b.js的源就是a.com。而非b.com。在同源策略的限制下是不能跨域訪問資源的,隨着web發展跨域資源共享,愈來愈迫切。這就催生了各類安全問題,常見的攻擊類型有:跨站腳本攻擊,跨站點請求僞造,點擊劫持等。css
跨站腳本攻擊(xss):html
他指經過「html注入」,篡改了網頁,加入了惡意腳本從而在用戶瀏覽網頁時控制了用戶的瀏覽器的行爲。例如將用戶的輸入顯示到頁面上,若是用戶輸入:<script>alert(1)</script>;用戶就能夠注入js。這種攻擊是至關具備威脅性的,假如說我能夠向當前你瀏覽的頁面中注入個人腳本,那麼我就能夠讀取你的cookie,經過cookie就能夠不用登陸,進入你某個網站的帳號(cookie劫持攻擊),這是很是危險的。更危險的是假如瀏覽器安裝了第三方差價,js經過調用這些插件能夠獲得用戶這是ip。xss最高級的攻擊形式爲蠕蟲攻擊:2007年,百度空間用戶之間相互發垃圾短信,後來百度應急小組緊急修復了這一漏洞。黑客用攻擊技巧有哪些呢,知己知彼才能百戰不殆。web
最簡單的是在輸入框輸入內容進行搜索,通常都會注意到可是嗨喲注意不到的例如:後端
切記用戶是不可信任的,它能夠輸入任何內容。跨域
通常狀況下都要將用戶的輸入通過編碼,注意贊成域名下的網頁編碼格式要一致,不然能夠應用編碼就行攻擊。瀏覽器
有的輸入是有長度限制的,例如名字,號碼長度,等。經過提早閉合標籤能夠繞過長度限制。安全
防護方法:不相信用戶的輸入,要對屬於進行編碼,進行長度檢查,利用httpOnly屬性防止cookie劫持,關鍵是輸出檢查,必定要嚴格控制好在html,js,css的輸出。cookie
第二種常見的是跨站點請求僞造,和點擊劫持。xss
假如說你在個人博客下面留言,這個留言能夠是一個鏈接,連接的url是刪除這篇博客的url,那麼我點擊這個連接就會將本身的博客刪除。這是瀏覽器的cookie策略。網站
不可是用在瀏覽器僞造,用後端語言均可以僞造,跨站點請求僞造的本質是:重要操做的參數被攻擊者猜到了,因此咱們使用token。讓攻擊者沒法構造完整的請求。因此token的使用原則是:隨機性,有生命週期,以及token的保密性。