系统安全

系统安全

1.一般黑客常用的XSS网络攻击的原理是什么?

XSS的全称是Cross Site Script,就是跨站点脚本攻击,意思就是说,黑客恶意篡改你的网页的前端代码,在里面注入一些他自己的html+javascript的脚本和代码,然后你比如在访问那个网站的网页的时候,他注入的那些恶意脚本就会运行了。

恶意脚本运行的时候就会控制你的浏览器,这个时候他的脚本就可以做很多很多的事情了。

第一种XSS攻击是反射型攻击,他主要是想办法让你点击一个URL链接,在这个URL链接里就嵌入他自己的恶意脚本,你点击那个URL链接之后,那个URL指向的是黑客自己的服务器上的一段恶意脚本。然后恶意脚本被返回到你的浏览器里就会运行,然后就可以控制你的浏览器里的行为了。

另外一种XSS攻击是叫做持久型攻击,这个意思就是说,举个例子,比如是个什么论坛、或者社交网站之类的系统,不是你可以发布一些帖子啊,或者是评论啥的内容么,此时黑客就可以在里面写一段恶意脚本。

然后把恶意脚本混杂在评论内容里提交到你的网站的数据库里去。

然后后面比如其他用户在社交网站里浏览到了你的这个评论,评论内容会被返回到浏览器里去,此时评论内容是包含恶意js脚本的,马上恶意脚本运行,又可以干坏事儿了,干的坏事儿就跟之前是一样的。

防止XSS攻击

消毒机制,这就是说,如果黑客在一些评论之类的内容里混入恶意脚本,那么你的代码里必须对内容进行消毒,就是进行一些转义,比如说把>转义为&gt之类的,这样就可以把恶意脚本里的html标签、js代码之类的东西,都给转义掉,让这些恶意脚本失效。

<html> -> &lthtml&gt,这种东西在浏览器里是不会运行的。

<html><script>// 包含恶意脚本</script></html>。

这样的话,转义以后的脚本被其他用户看到的时候也不会在浏览器里运行了。

HttpOnly方式,这个意思是说如果你在浏览器里存放cookie的时候,可以设置一个HttpOnly属性,比如说存放用户加密认证信息的cookie,这样的话,在浏览器里运行的js脚本是被禁止访问这些HttpOnly cookie的,他就无法窃取你在浏览器里存储的cookie了。

2.SQL注入攻击背后的原理是什么?

SQL语句里可以拼接进去各种支持的SQL语法,包括对数据库施加的命令,甚至通过附加一些脚本直接窃取你的数据,都是有可能的 。

但是如果要给你搞SQL注入,其实也不是那么容易的,因为必须要知道你的数据库表结构才行,一般获取数据库表结构的方式就下面几种:

(1)如果你使用的是开源软件,比如开源的博客系统,论坛系统,或者别的什么系统,那么人家自然知道你的表结构了,这种情况是比较少见的。

(2)错误回显,不知道大家有没有经历过这种,就是你有时候把系统跑在web服务器里,然后程序报错了,结果直接在浏览器页面上显示出来了你的异常堆栈信息,包括有错误的SQL语句,这就尴尬了,通过这个,黑客直接就知道你的表结构了。

(3)根据你的请求参数的名称,大致推测你的数据库表结构,这个一般不太现实。

防止SQL注入

一个是别让人家知道你的数据表结构,关闭web服务器的错误回显,显示一个400,500之类的就可以了,另外一个,就是要用预编译的方法,现在mybatis、hibernate都是支持预编译的。

这个预编译,就是说把黑客在参数里混进来来的SQL语句当做一个参数,而绝对不会作为独立的SQL语句去执行,这就避免了SQL注入攻击了。

3.CSRF攻击背后的原理是什么?

Cross Site Request Forgery,垮站点请求伪造。

这个就是黑客想办法去伪造成你这个用户去发送请求到某个系统上去,然后查询你的数据,转账交易之类的,伪装成你,也有很多办法,比如利用XSS搞一个恶意脚本让你执行,然后盗取你的浏览器里的cookie。

利用你的cookie伪装成你登录的状态,然后去执行一些请求。

利用XSS跨站点脚本攻击,获取cookie,然后再利用postman发送垮站点伪造请求。

防御CSRF的方法

(1)防止cookie被窃取:最最根本的,其实还是说防止cookie被窃取,可以给你的网站的cookie设置HttpOnly属性,禁止被别人的script脚本窃取,那么别人就无法伪造用户登录请求了。

(2)随机token:每次返回一个页面给你的时候,都生成一个随机token附加在页面的隐藏元素里,同时在你的redis里可以存以下,然后页面发送请求的时候附加随机token,验证通过才能执行请求,你要是自己用postman构造请求就不知道随机token是什么了。

(3)验证码:页面提交必须搞一个验证码,那种图形的,现在比较流行的还有拖动一个拼图什么的,必须验证码通过了才能执行你的请求,避免黑客直接伪造请求发送过来,这个其实是比较常见的,最好是在用户进行支付交易的时候,要求必须在页面上拖拽一个拼图验证码。

(4)Referer请求头:这个是http请求里有一个referer请求头,带有这个请求的来源,你可以验证一下这个请求是不是从自己的页面里来的,如果是的话才执行,否则就不要执行了。

4.如果你们的系统允许用户上传文件,可能会遭到什么样的黑客攻击?

很多时候如果我们的网站允许别人上传文件,那么文件可能是可执行的脚本,可能是病毒或者木马文件,其实这个是非常危险的,如果是脚本的话,可能会在服务器执行,搞很多破坏,比如黑客黑掉你的服务器,勒索你给他比特币之类的。

比如把自己的文件后缀改成.jpg、.txt之类的东西,来上传,其实本质病毒文件。

对于文件上传这块,核心的就是要进行白名单校验,限制上传文件的类型,只能是我们指定的,而且要限制文件的大小,还要对文件重命名,限制文件类型不能简单的根据后缀来判断,可能后缀被篡改了,要根据文件二进制数据的开头几个字节代表的magic number来判断文件的类型。

读取这个文件的二进制数据流,读取开头的几个字节,提取这个文件的魔数,根据魔数的值去判断他是什么类型的。

FFD8FF:JEPG

89504E47:PNG

类似这样,以此类推。

比如说你的网站要求用户只能上传word类型,png类型,此时你就限制仅仅这几种文件是可以上传的,其他的类型的文件都不让上传。

而且还要限制,不允许用户上传大文件,文件超过一定大小就不让上传了。

然后对上传好的文件进行重命名。

而且最好对文件进行一定的压缩,这样可以破坏原来的文件结构,避免文件在服务器执行,利用imagemagick这种开源包,可以很方便进行文件缩放。

5.DDoS攻击到底是什么东西?

DDoS,distributed denial of service,分布式拒绝服务攻击,最可怕的黑客攻击,可以把你的网站、APP、系统给搞瘫痪了。

DoS攻击,就是说黑客知道你的服务器地址了,然后你的系统假设每秒就抗下1000请求,黑客就以每秒1000请求访问你,你的服务器线程资源全部打满,正常用户根本无法发送请求,你的网站就宕机了。

甚至他以每秒1万请求攻击你的服务器呢,那就的系统机器就挂了。

DoS攻击是一对一的,就是黑客搞一台高性能服务器,拼命发送请求给你的一台服务器,但是如果你的服务器配置超高,每秒抗1万请求,结果黑客的机器每秒才5000请求,那么就没用了。

DDoS的意思就是黑客控制大量的机器,比如普通人的电脑,或者是一些公司的服务器,被他的一些木马植入给控制了,就是所谓的“肉鸡”,然后黑客下达指令,让所有肉鸡一起发送请求给攻击目标,直接搞瘫你的服务器。

如何防御DDoS攻击?自己其实挺难的,这其实是非常专业的一种攻击手段,通常我们可以采购云厂商的安全服务,比如DDoS高防IP,可以把攻击流量都导入到云厂商的高防IP的服务器上去,他们有专业的技术方案和算法来防御。

6.DNS Query Flood攻击

这个DNS Query Flood攻击,顾名思义,就是去攻击DNS服务器,也就是伪造大量的域名解析请求发送给DNS服务器,然后DNS服务器必然没有,接着必然会去找上级DNS服务器,一直到根域名服务器。

这么搞必然导致DNS服务器的资源别耗尽,其他正常人浏览网页也要解析域名的,此时就没法访问DNS服务器了。

7.Zuul网关是如何防止网络攻击的?

XSS核心是设置cookie的http only属性,过滤脚本,CRSF也是设置cookie的http only属性,根据referer请求头来过滤,设置表单随机参数,SQL注入就是过滤恶意参数,DDoS攻击主要就是限流。

zuul网关里加一个过滤器,过滤器里去过滤一些特殊请求的脚本,根据referer请求头过滤,对请求的随机token进行校验,甚至可以对参数进行校验,如果参数里包含SQL说明要注入,全部过滤,对ip地址可以进行基于redis的访问计数,比如说一个ip地址一秒内连续访问5次,那么就直接禁止访问。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值