1.XSS
什么是xss攻击???
就是攻击者将可执行代码注入到网页中,一般可以分为两种,一种是攻击的代码被写入数据库,这种攻击危害比较大,如果网站访问量比较大的话,会导致大量正常访问页面的用户都收到贡酒,另一种是通过修改url参数的方式加入攻击代码,诱导用户访问链接从而进行攻击
如何防范xss攻击???
通常可以通过两种方式防御:
1)转义字符
将用户输入的内容进行转义,最好是对一些内容进行过滤,比如script标签
2)通过csp
本质是建立白名单,开发者明确告诉浏览器哪些外部资源是可以加载和执行的,只需要配置规则,拦截由浏览器自己实现。
开启csp的两种方式:
设置HTTP Header中:
Content-Security-policy
只允许加载本站资源 :Content-Security-Policy: default-src ‘self’ 只允许加载 HTTPS
协议图⽚:Content-Security-Policy: img-src https://*
允许加载任何来源框架:Content-Security-Policy: child-src ‘none’
设置meta标签的方式:
<meta http-equiv=”Content-Security-Policy”>
2.CSRF(跨站请求伪造)
什么是CRSF???
原理是攻击者构造出一个后端请求地址,诱导用户点击或者通过某些途径自动发起请求,如果是用户在登录状态下的话,后端就认为是用户在操作,从而进行响应的逻辑。
如何防范CRSF的攻击???
Get请求不对数据进行修改
不让第三方网站访问到用户的cookie,可以对cookie设置SameSite属性,表示不随跨域请求发送,可以很大程度的减少CRSF的攻击
通过Referer判断请求是否为第三方网站发起的,阻止第三方网站请求接口
请求时附带验证信息,比如验证码或者token,让服务器检验是否有效
3.点击劫持
什么是点击劫持???
点击劫持是一种视觉欺骗的手段,攻击者在页面下隐藏了一个透明的iframe(opacity:0),用外层假页面诱导用户点击,实际上是在隐藏的iframe上触发了点击事件进行一些用户不知情的操作。
如何防范点击劫持???
1)X-FRAME-OPTIONS
是一个HTTP响应头,值有三个可选,DENY表示页面不允许通过iframe展示,SAMEORIGIN表示在相同域下可以通过iframe展示,ALLOW-FROM表示页面可以在指定来源的iframe中展示
2)JS防御
通过JS禁止内嵌(普通页面中的top等于window)
if (top.location !== window.location){
top.location == window.location
}