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