WEB前端安全——Cookie安全、密码安全、点击劫持

一 Cookie安全

Cookie的安全和CSRF是有紧密联系的,CSRF攻击本质就是利用Cookie存储的信息。下面介绍几个重要的Cookie的属性。前端

1 Secure

指定Cookie是否只能经过https协议访问,通常的Cookie使用HTTP协议便可访问,若是设置了Secure,则只有当请求是使用https协议时cookie才会被发送到服务端。算法

2 HttpOnly

若是在Cookie中设置了"HttpOnly"属性,那么经过程序(JS脚本、Applet等)将没法读取到Cookie信息。这是防护XSS的一个方法。数据库

3 SameSite

SameSite-cookie的目的是尝试阻止CSRF以及XSS攻击,能够防止cookie被非同源的网站利用。可是这个属性有浏览器兼容性的问题。其有两个值:浏览器

Strict 严格模式,代表这个 cookie 在任何状况下都不可能做为第三方 cookie,绝无例外。安全

Lax 宽松模式,比 Strict 放宽了点限制。假如请求是同步请求(改变了当前页面或者打开了新页面)且同时是个 GET 请求,则这个 cookie 能够做为第三方 cookie。假如请求是异步请求,或者页面跳转是经过表单的 post 提交触发的,则不会发送。服务器

二 密码安全

1 密码泄露渠道

  • 数据库泄漏
  • 服务器入侵
  • 传输过程被窃听

2 密码安全要求

  • 存储安全:严禁明文存储
  • 传输安全:严禁明文传输、限制频率

严禁明文传输的意义是防止传输过程当中明文密码被窃听,严禁明文存储的意义是防止明文密码被盗取或泄漏。cookie

3 传输安全

HTTP在传输过程当中是明文的,这意味着咱们网站的信息是会被泄漏的,也意味着攻击者能够对咱们的网站进行劫持,例如注入广告。解决方案是升级HTTPS,HTTPS是加密传输的。固然,HTTPS也有许多的设置,有一些加密方式也是不安全的,这须要开发者进行选择。异步

4 密码加固方法

  • 单向变换(哈希算法)——防泄漏
  • 变换的复杂度要求(屡次变换)——防猜解
  • 密码复杂度要求(加盐)——防猜解

密码加固主要是经过哈希算法(即摘要算法,例如MD5/SHA)对密码进行处理,这种算法是不可逆的,可是能够经过彩虹表进行破解,因此对密码进行一次哈希处理是不够安全的,能够经过屡次哈希处理以及屡次不一样的哈希算法来提升破解难度。也能够在哈希处理前,给密码加盐(在密码固定位置中加入特定的字符串)来提升密码的复杂度。post

5 前端加密

前端加密的意义有限,能防止密码明文在传输过程当中被窃听和泄漏,可是没法阻止用户资料被盗取或被登陆,意思是前端加密的密码只能保证实文密码不泄漏,可是没法保证前端加密后的密码不泄漏。网站

三 点击劫持

点击劫持,又称界面假装攻击,攻击者通常经过透明的iframe(目标网站),覆盖在攻击者的网页上,并诱导用户进行操做。这种通常会利用XSS或CSRF漏洞来进行攻击。解决方案是经过设置HTTP头X-Frame-Options,来防止网页被Iframe加载。它有三个值:

DENY:浏览器会拒绝当前页面加载任何frame页面

SAMEORIGIN:frame页面的地址只能为同源域名下的页面

ALLOW-FROM origin:容许frame加载的页面地址

四 后记

本文简单地介绍了Cookie安全、密码安全、点击劫持这三个方面值得注意的地方,若是想了解更详细的前端安全,能够阅读本文的大哥篇: WEB前端安全——XSS和CSRF