当前位置: 首页 > news >正文

【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第七节:网关-XSS攻击与预防

【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第七节:网关-XSS攻击与预防

  • 网关
  • 协议转换
  • 路由转发
  • 负载均衡
  • 安全保障
  • xss攻击
    • 类型
      • 反射型
      • 持久型
    • 反攻击
      • 消毒
      • http only

在前面的文章中,我们讲了负载均衡,讲了请求从客户端出发到服务器的中间过程。我们是按照用户请求到达我们服务器的顺序来讲解我们架构方面的知识的。

那么,在用户的请求到达我们服务器之前,在一般的这些大型互联网系统中,还有一个重要的组件叫做网关。

我们前面讲了,比如说用户操作了客户端,中间经历了DNS,CDN,反向代理,然后最终到达我们的server端。但是在到达我们具体提供的Web服务之前,还有一个叫做网关的东西,有可能在反向代理的后面;有可能没有反向代理这一层,过了网关之后接着就是nginx;或者nginx在网关前面,这些方案都有。

在这里插入图片描述

好了,那我们本篇文章来看一下网关。

网关

网关其实也可以做负载均衡,比如说在微服务当中的Gateway,就这类型的网关也是可以有负载均衡功能的,还有一些企业自己自研的网关其实也有负载均衡功能。

那么网关做负载均衡,可以是项目所有接口的出入口,就像一个关口一样,就像一个房间的门,所有的请求都得从这个门进,从这个门出。一般在比较正规大型的公司中,我们的请求在进入具体服务之前,都有网关。

网关有几大功能:

  • 协议转换
  • 路由转发
  • 负载均衡
  • 安全保障

在这里插入图片描述

协议转换

协议转换是什么意思呢?我来举一个例子。

比如说公司内部的系统用的是dubbo协议开发的,但是对外呢,是一个标准的restful风格,这个时候就需要用到协议转发。

比如说这是一个网关,然后下面是我们的服务,网关和这些服务之间有可能用的dubbo,或者说这些服务对外提供的协议就是dubbo协议,但是外面的用户或者说客户端它来请求网关的时候,用的是restful。

在这里插入图片描述

比如说有的公司是用c、c++开发的,或者其他语言开发的,然后他们这些语言去调用restful风格的http协议会比较方便一些,但是他们去调用dubbo就不方便了。所以网关就需要将这种restful风格的http协议转换成我们自己用的dubbo协议。

路由转发

路由转发,我也举个例子。

比如说用户访问的是URL a,但是经过网关之后,将请求转发到内部的URL b。这样一是对内部地址的一种保护,另外一方面也是涉及到解偶。这样的话,对外永远都是URL a,但是内部可以调整。一般的微服务也有对应的解决方案。

这是一个网关,然后内部有几个服务,比如这个服务提供的是URL b,但是对外,你要访问这个URL a,一方面是不让外面的调用方知道我们具体内部的这种编排URL地址的逻辑,另外一方面就是说对外永远访问的是URL a。

在这里插入图片描述

有可能我们的这个服务要删掉了,或者说这个地址有调整,可能需要把它改成URL c,那么我们只在网关中把代码更新一下,把a原来是到b的映射,我们现在把它改成到c的映射就可以了,而客户端的调用可以保持不变,他们该怎么调还怎么调,不用说因为我改成c了,客户端的调用也要改成c,然后客户端还得发布一个新版本,这个是不需要的。

负载均衡

我们前面讲负载均衡呢,已经讲了很多了,它就是将请求分发到不同的服务器上。也就是说,这是一个网关,然后用户经过之后,网关后面有多个服务,它可以把请求分发到后面的多个服务,这个是一个负载均衡的功能。

在这里插入图片描述

安全保障

还有一个就是安全性的保证。

就是网关还要得保证系统的整体安全,因为它是一个系统的出入口,就像我们进一个写字楼,门口有两个保安一样,进地铁口还得过安检,这是系统对外的唯一的一个出入口,所以在这块保证安全是基本上是必做的。

在这里插入图片描述

安全性的话,我们这篇文章,就讲一个xss攻击。然后后面再讲SQL注入,csrf等等。

xss攻击

从一开始有互联网,安全的威胁就一直在,各种外部攻击和信息泄露的新闻,到处可见。

xss和sql注入是最主要的两种攻击手段,全球大概有70%的攻击都来自xss攻击和sql注入。

我们来看一下什么叫xss。xss就是Cross Site Script,也就是跨站点脚本攻击。就是黑客通过篡改网页注入恶意的脚本,当用户浏览网页时,它通过控制用户的浏览器进行一些恶意的操作。

比如说,我是一个黑客,我把一些脚本输入到系统里,可能输入到某个系统中的一篇文章当中,然后用户打开这篇文章,那个脚本在浏览器里就自动去执行了,然后我就写一些业务逻辑代码。

在这里插入图片描述

类型

反射型

常见的xss的攻击一般有两种,一种是反射型,这种就是攻击者诱使用户点击一个恶意脚本的链接达到攻击的目的。这什么意思呢?比如说用户最开始,他登录了一个系统,登录完系统之后他在那操作,然后攻击者就把一个包含恶意脚本的信息推给他,然后他一点这个恶意脚本他就做了攻击者想要他做的一些事情。

在这里插入图片描述

比如说这是一个正常的服务器,一个用户,一个攻击者。然后用户去登录系统,正常的输入用户名密码登录了,然后他就开始正常浏览网页,浏览网页的时候,攻击者在他这个网页当中嵌入一段脚本,比如说他浏览的是攻击者发布的一篇文章,然后他就打开攻击者那篇文章,但是攻击者那篇文章中有攻击者写的一些script的脚本,然后脚本就在他的浏览器获取他的token信息,获取他的一些用户敏感数据,然后利用他的账户向服务器提交一些东西,这个就叫做反射型的攻击。

这种攻击有时候搞一些恶作剧还可以,就怕这种攻击它会利用用户的cookie里面的用户名、账号、密码等信息,甚至伪造一些交易盗用用户的财产。

持久型

还有一种叫做持久型的。

这个是通过黑客提交恶意脚本的请求,保存在被攻击的web站点的数据库中,用户浏览网页时,恶意脚本被包含在正常网页中,用户浏览器一操作就达到了攻击的目的。

在这里插入图片描述

这种攻击和上面的攻击区别,就是反射型它只攻击局部,持久型的是攻击是网站中只要浏览那个信息的人就可以。

比如说有一个网站,这正常的服务器,攻击者把脚本直接放到服务器,导致所有的用户在请求浏览正常网页的时候都会受到攻击。而反反射型的基本上有一个用户也在用,攻击者也在用,攻击者直接通过某种方式把脚本放在用户的浏览器执行。

就是持久型的攻击就是放到数据库里,反射型就是放到用户的页面。持久型的危害会比较大一些。

反攻击

xss一种非常古老的攻击手段,但是它不断变化,许多以前认为不可能被攻击的漏洞也逐渐被攻击了,因此xss反攻击是非常复杂的。

我们来聊一聊如何去应对xss的攻击。

消毒

第一种就是消毒。

什么叫消毒呢?就是xss攻击者一般是通过在请求中嵌入恶意脚本达到攻击的目的。如果我们能对用户的输入内容进行过滤,也就是当我们检测到用户的输入内容中有危险的字符的时候,比如说尖括号,那就对用户进行提示比如说:“您有非法输入”,或者干脆将用户的危险字符进行替换,在参数校验的时候,直接把它replace成<。

在这里插入图片描述

在这里插入图片描述

这样的话就可以防止大部分的攻击,但这个时候要注意,有时候会有一个误杀的情况,比如说我输入了一串字符叫做“1<2”,然后他把这个也替换成了这个“1&lt2”,然后展示的时候也展示成“1&lt2”,这样的话对用户来说是不友好的。

所以说当遇到这种情况的时候,要进行一个判断,看看什么是正确的,比如说判断一下前后的字符串。

http only

还有一个http only。

http only,最早是由微软提出的,原理就是浏览器禁止页面中的JavaScript访问带有http only的cookie。http only并不是直接预防xss攻击的,而是预防xss攻击之后窃取用户的cookie的。

有一些人将一些敏感的信息写到cookie里,然后一些攻击者就可以通过读取cookie来达到窃取他人信息的目的,进而做一些危险的,有损于用户的操作。那么我们可以在服务器向客户端写cookie的时候,给cookie添加一个http only属性呢,就能避免被攻击者窃取。

一般的怎么去设置这个cookie呢?

Cookie cookie = new Cookie("cookieName", "cookieValue");
cookie.setHttpOnly(true);
response.addCookie(cookie);

这么这么写上就OK了。然后攻击者就不能去操作这个cookie了。

相关文章:

  • uniapp日常总结--uniapp页面跳转方式
  • 单片机Day05---静态数码管
  • Cocos Creator Shader入门实战(八):Shader实现圆形、椭圆、菱形等头像
  • IIC通信协议
  • Python快速入门指南:从零开始掌握Python编程
  • JetBrain/IDEA :Request for Open Source Development License
  • 基于springboot+vue的秦皇岛旅游景点管理系统
  • MySql 自我总结
  • GOC 指令集
  • 深入学习任何技术的实用指南
  • data_analysis14
  • C++之map,set的实现
  • AI大模型从0到1记录学习 day17
  • 基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(二)
  • 5分钟搭建一个在线客服网站!免费!
  • Microsoft Office 如何启用和正常播放 Flash 控件
  • 腾讯后台开发 一面
  • vulkanscenegraph显示倾斜模型(5.8)-视景器编译
  • Go:复合数据结构
  • 阿里云实时计算Flink版产品体验测评
  • 四川建设机械网站/淘宝怎么做引流和推广
  • 山东兴华建设集团有限公司网站拼音/怎么搭建网站
  • web是做网站的吗/免费b2b平台推广
  • wordpress插件功能/抖音优化
  • 怎么在服务器上面建设网站/宁波seo推广公司排名
  • 社交电商app开发/惠州seo网站推广