Cookie的安全和CSRF是有緊密聯繫的,CSRF攻擊本質就是利用Cookie存儲的信息。下面介紹幾個重要的Cookie的屬性。前端
指定Cookie是否只能經過https協議訪問,通常的Cookie使用HTTP協議便可訪問,若是設置了Secure,則只有當請求是使用https協議時cookie纔會被髮送到服務端。算法
若是在Cookie中設置了"HttpOnly"屬性,那麼經過程序(JS腳本、Applet等)將沒法讀取到Cookie信息。這是防護XSS的一個方法。數據庫
SameSite-cookie的目的是嘗試阻止CSRF以及XSS攻擊,能夠防止cookie被非同源的網站利用。可是這個屬性有瀏覽器兼容性的問題。其有兩個值:瀏覽器
Strict
嚴格模式,代表這個 cookie 在任何狀況下都不可能做爲第三方 cookie,絕無例外。安全
Lax
寬鬆模式,比 Strict 放寬了點限制。假如請求是同步請求(改變了當前頁面或者打開了新頁面)且同時是個 GET 請求,則這個 cookie 能夠做爲第三方 cookie。假如請求是異步請求,或者頁面跳轉是經過表單的 post 提交觸發的,則不會發送。服務器
嚴禁明文傳輸的意義是防止傳輸過程當中明文密碼被竊聽,嚴禁明文存儲的意義是防止明文密碼被盜取或泄漏。cookie
HTTP在傳輸過程當中是明文的,這意味着咱們網站的信息是會被泄漏的,也意味着攻擊者能夠對咱們的網站進行劫持,例如注入廣告。解決方案是升級HTTPS,HTTPS是加密傳輸的。固然,HTTPS也有許多的設置,有一些加密方式也是不安全的,這須要開發者進行選擇。異步
密碼加固主要是經過哈希算法(即摘要算法,例如MD5/SHA)對密碼進行處理,這種算法是不可逆的,可是能夠經過彩虹表進行破解,因此對密碼進行一次哈希處理是不夠安全的,能夠經過屢次哈希處理以及屢次不一樣的哈希算法來提升破解難度。也能夠在哈希處理前,給密碼加鹽(在密碼固定位置中加入特定的字符串)來提升密碼的複雜度。post
前端加密的意義有限,能防止密碼明文在傳輸過程當中被竊聽和泄漏,可是沒法阻止用戶資料被盜取或被登陸,意思是前端加密的密碼只能保證實文密碼不泄漏,可是沒法保證前端加密後的密碼不泄漏。網站
點擊劫持,又稱界面假裝攻擊,攻擊者通常經過透明的iframe(目標網站),覆蓋在攻擊者的網頁上,並誘導用戶進行操做。這種通常會利用XSS或CSRF漏洞來進行攻擊。解決方案是經過設置HTTP頭X-Frame-Options,來防止網頁被Iframe加載。它有三個值:
DENY
:瀏覽器會拒絕當前頁面加載任何frame頁面
SAMEORIGIN
:frame頁面的地址只能爲同源域名下的頁面
ALLOW-FROM origin
:容許frame加載的頁面地址
本文簡單地介紹了Cookie安全、密碼安全、點擊劫持這三個方面值得注意的地方,若是想了解更詳細的前端安全,能夠閱讀本文的大哥篇: WEB前端安全——XSS和CSRF