二、什么是xss攻击?如何防御?
xss攻击就是黑客通过在网站上注入恶意脚本,在用户使用浏览器访问该网站时盗取用户的cookie等信息
这种攻击能够生效主要是因为网站没有对恶意代码实现很好的过滤,在正常代码执行的同时也执行了恶意脚本
这种攻击方式主要通过获取localStorage cookie dom元素等获取页面数据,可以更改网站内容、破坏页面结构和进行数据盗取
同时也会发送dos ddos攻击,消耗网络资源,使得合法的用户请求无法通过;也可以建立大量连接消耗用户计算机操作系统资源,使计算机死机或挂起
也可以进行流量劫持,比如外链一个病毒网站,使得用户无法正常访问目标网站
xss攻击有哪些具体的攻击场景?
- 像论坛发帖、商品评价这种存在评论区的一些页面板块都可以发起攻击
黑客可以把病毒脚本植入评论区,通过伪装成用户数据提交到服务端的数据库中;这样一旦用户进入目标网站,评论区渲染的时候病毒代码就会从数据库取出、拼接到html中返回浏览器执行,窃取用户数据或其他攻击操作
- 诱导用户点击恶意链接,通过url传参的特点实现恶意跳转或直接实现病毒植入
防御方法(从三方面考虑):规范网站的前端代码、切断恶意代码的执行、防止恶意代码的提交
-
针对DOM元素篡改的攻击:对前端脚本进行安全鉴定,规范html js css等输入编码,避免html拼接,在数据获取渲染和字符串拼接等时候可能出现的恶意代码情况进行判定处理,对一些敏感信息像电话号、邮箱、url做详细的校验判断 -
避免一些外链恶意网站的操作,使用csp(内容安全策略)建立白名单,告诉浏览器可以加载和执行那些外部资源,防止恶意代码的注入攻击 csp的开启有两种方式—设置http首部的content-security-policy;设置meta标签, -
对一些敏感信息比如cookie设置http-only进行保护,防止脚本获取;也可以使用验证码,避免脚本的一些用户伪装操作
三、什么是csrf攻击?如何防御?
如果说xss攻击主要的攻击手段是依托编写的恶意代码注入实现的化,那csrf攻击主要攻击方式就是诱导用户跨站。比如说我在网站中注入了一些遮挡关键内容的广告,让你必须点击才能消除,甚至我直接伪造其中的关闭按钮成一个外接url。本质是利用cookie会携带在同源请求中发送给服务器这一个特点,你一旦点击正在访问网站中的诱导,跳转到我设计的病毒网站。就直接向原始网站发送请求,获取哪个网站中你的cookie信息,也就是用户已经获取的注册凭证,实现用户的冒充,绕过后台的用户验证,冒充用户请求服务器资源
常见的csrf攻击主要有三种:get类型、post类型、链接类型
- get类型:比如在img标签中构建一个请求,用户打开网站会自动发起提交
- post类型:构建一个表单进行隐藏,用户一进入页面就会提交表单到恶意网站
- 链接类型:a标签的href属性中构建请求,诱惑用户进行点击
防御方法:
-
进行同源检测 检查请求头中的origin host referer,判断请求的站点是否允许访问,进行请求过滤。当referer或origin不存在直接阻止请求。 -
设置cookie属性的时候设置下samesite,限制cookie不能被第三方使用。通过设定严格模式,让cookie不能发送到其他网站的服务器;跨站点情况i下,宽松模式下的get请求提交表单会携带cookie post或img iframe等标签加载的url就不会携带cookie -
进行token验证。网站每次向服务器发送请求都携带token,在服务端进行token校验,防止cookie单一校验容易被冒用的问题。不过这种方法操作比较繁琐,而且如果你的请求经过负载均衡转移到其他服务器,而seesion中又没保留token就无法验证。一般通过改变token的构建方式解决。
|