中间人攻击
解决方案:
- 加入CA
XSS跨站脚本攻击
恶意代码未经过过滤,与正常代码混在一起,浏览器无法区分哪些脚本可信,导致脚本执行。任何输入的地方都有可能引起,代码注入问题
解决方案:
- 转义
- 输入过滤
- cookie http-only
- CSP 【限制资源执行】
CSP 本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行。我们只需要配置规则,如何拦截是由浏览器自己 实现的。我们可以通过这种方式来尽量减少 XSS 攻击。
通常可以通过两种方式来开启 CSP:
1)设置 HTTP Header 中的 Content-Security-Policy
2)设置 meta 标签的方式 <meta http-equiv="Content-Security-Policy">
只允许加载本站资源 Content-Security-Policy: default-src ‘self’
只允许加载 HTTPS 协议图片 Content-Security-Policy: img-src https://*
允许加载任何来源框架 Content-Security-Policy: child-src 'none'
XFRAME 点击劫持
点击劫持是一种视觉欺骗的攻击手段。攻击者将需要攻击的网站通过 iframe 嵌套的方式嵌入自己的网页中,并将 iframe 设置为透 明,在页面中透出一个按钮诱导用户点击.
- JS防御
当通过 iframe 的方式加载页面时,攻击者的网页直接不显示所有内容了 (底层页面剔除)
- 设置 HTTP Header 中的 X-FRAME-OPTIONS
X-FRAME-OPTIONS 是一个 HTTP 响应头。这个 HTTP 响应头 就是为了防御用 iframe 嵌套的点击劫持攻击。
该响应头有三个值可选,分别是
DENY,表示页面不允许通过 iframe 的方式展示
SAMEORIGIN,表示页面可以在相同域名下通过 iframe 的方式展示
ALLOW-FROM,表示页面可以在指定来源的 iframe 中展示
CORS跨域资源共享
可以让ajax实现跨域访问
1)设置请求头Access-Control-Allow-Origin:
允许任何域的请求 Access-Control-Allow-Origin: *
仅允许来自指定域名的跨与请求 Access-Control-Allow-Origin: http://feature.com
2)设置请求头Access-control-allow-methods:
允许任何方法 Access-Control-Allow-Methods: *
3)js配置xhr,允许跨需携带cookie
xhr.withCredentials = true
4)设置请求头 Access-Control-Allow-Credentials
允许跨域携带cookie Access-Control-Allow-Credentials: true
CSRF 跨站请求攻击(劫持cookie)
攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并运行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去运行。这利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。csrf并不能够拿到用户的任何信息,它只是欺骗用户浏览器,让其以用户的名义进行操作