谈谈系统安全我们知道多年前微博收到了XSS攻击用于自动关注了一个病毒用户然后病毒用户自动发布病毒微博大量的人点击后再度扩散导致曾经很多重要的网站都遭受了攻击致使成百上千万的用户数据遭泄露。直到现在有时候大家还会听到某某网站、某某APP用户数据泄露的问题。所以系统安全问题一直是一个非常重要的系统架构设计的话题。你的系统如何保证安全性如何避免何可攻击导致系统故障如何避免系统的核心数据遭到泄露这是一个非常重要的事情。现在更多的一个趋势是安全这块交给专业的公司和团队去做我们购买他们的服务但是我们要了解常见的网络攻击手段知道如何使用一些云公司的安全产品来保护我们的系统同时我们自己的系统有时候也可能要做一些简单的防御措施。常见的网络攻击手段包括了XSS跨站点脚本攻击、SQL注入、CSRF跨站点请求伪造、错误回显、HTML注释、文件上传、路径遍历等等每一种攻击手段都有办法可以避免所以我们最近就是学习一下系统安全性的问题和常见防御手段。目录1、XSS网络攻击1.1 一般黑客常用的XSS网络攻击的原理是什么1.2 如何防止XSS攻击2、SQL注入2.1 攻击背后的原理是什么2.2 获取数据库表结构的方式有哪几种2.3、如何防止SQL注入3、CSRF攻击3.1 背后的原理是什么3.2 如何防止CSRF攻击4、用户上传文件遭受的攻击4.1 攻击背后的原理是什么4.2、如何防止文件上传中的黑客攻击5、DDoS攻击5.1 背后攻击的原理是什么5.2 DDos攻击的方式有哪些5.2 如何防止DDoS攻击1、XSS网络攻击1.1 一般黑客常用的XSS网络攻击的原理是什么XSS全称是Cross Site Script就是跨站点脚本攻击意思就是说黑客恶意篡改你的网页前端代码在里面注入了他自己的htmljavascript脚本和代码然后当你访问那个网站网页的时候黑客注入的恶意脚本就会运行了恶意脚本运行期间会控制你的浏览器这就很恐怖了比如脚本可以让你关注某个用户ID然后控制你自动发布带有病毒的微博。或者你的浏览器存储了一些cookie和你的密码恶意脚本会获取cookie伪造你用户登录的session状态以你的名义做一些事情。常见的XSS攻击有两种方式1反射攻击他主要是通过展示一个图片、动画或者比较有诱惑性的视频想办法让你点击这个URL连接在这个URL链接里嵌入自己的恶意脚本你点击之后就会被攻击。2持久型攻击意思就是比如一些论坛、社交网站之类的系统此时黑客可以发布一些帖子或者评论在帖子或者评论中写一段恶意脚本这些内容会被存储到网站数据库。当别的用户在社交网站里浏览了黑客的评论这个评论内容就会返回到浏览器中去取执行这段恶意代码。1.2 如何防止XSS攻击注意包含恶意URL链接的图片、动图、flash动画尽量不要点尽量访问正规的网站。系统添加消毒机制对于评论之类的内容存入数据库前要进行消毒就是进行一些转义比如将html标签js之类的标签用gt进行转义让恶意代码失效。这样的话就算别的用户看到也不会在浏览器中执行了。HttpOnly方式就是说你的浏览器存放cookie的时候给它设置一个HttpOnly属性这样的话在浏览器里运行的js脚本是被禁止访问这些HttpOnly cookie的黑客就无法窃取你浏览器中的cookie 了。2、SQL注入2.1 攻击背后的原理是什么在系统执行SQL语句得时候也可能存在漏洞导致黑客把一些恶意的SQL语句注入到你的系统让你的数据库来执行。比如有这样一个URL请求http://www.xxx.com/goods?goodsSkuNoxxx对应的sql语句select /* from eshop/_goods/_sku where goods/_sku/_no’xxx’被黑客拼接成了如下的样子http://www.xxx.com/goods?goodsSkuNoxxx’;drop table eshop/_goods/_sku;执行的SQl语句就变成了select /* from eshop/_goods/_sku where goods/_sku/_no’xxx’ http://www.xxx.com/goods?goodsSkuNoxxx’;drop table eshop/_goods/_sku;这就造成了删库跑路的效果了。2.2 获取数据库表结构的方式有哪几种其实SQL注入不是那么容易的需要知道数据库表结构才行。一般获取数据库表结构的方式有以下几种1、如果你是用的是开源软件比如开源的博客系统、论坛系统、或者别的系统那么人家自然就知道你的表结构了这种情况是比较少见的。2、错误回显不知道大家有没有这种经历就是你将系统跑在web服务器里然后程序报错了结果在浏览器页面上直接显示出来异常的堆栈信息包括错误的SQL语句通过这个黑客就直接知道你的表结构了。然后通过postman进行请求拼接一段sql就造成了SQL注入。3、根据你请求参数的名称大致推测表结构不太现实。2.3、如何防止SQL注入1、要防止SQL注入其一就是不要让别人知道你的数据表结构关闭web服务器的错误回显在controller层面用try catch捕获异常直接给浏览器返回400或者500之类的就可以了。2、在JDBC层面使用预编译的手段mybatishibernate就支持预编译比如我们传入了参数mybatis会在预编译阶段使用占位符占用参数位置select /* from xxx where id?真正执行的时候数据库不会将参数的内容视为SQL执行的一部分而是作为一个字段的属性值来处理select /* from xxx where id’xxx’3、CSRF攻击3.1 背后的原理是什么Cross Site Request Forgery跨站点请求伪造就是黑客想办法伪造你这个用户去发送请求到某个系统上去然后进行查询交易类的操作。伪装成你也有很多方法比如利用XSS搞一个恶意脚本让你执行然后盗取你浏览器的cookie利用cookie伪装成你登录的请求在远程黑客服务器去执行一些请求。3.2 如何防止CSRF攻击1、**防止cookie被窃取**将网站的cookie设置为HttpOnly属性禁止别人用js脚本窃取。2、**随机token**每次返回一个页面给你的时候都生成一个随机token附加在页面的隐藏元素里同时在redis中存一份然后页面发送请求的时候附加随机token通过验证才能执行请求你要是自己用postman构造请求就不知道随机token是什么了。3、**验证码**页面提交可以做一个验证码比如拖动拼图必须验证通过了才能执行你的请求避免黑客直接伪造请求发送过来在交易的时候常用。4、**Referer请求头**http请求里面有一个 Referer请求头带有这个请求的来源你可以验证一下这个请求是不是从自己的页面里面来的如果是则执行不是则不执行。4、用户上传文件遭受的攻击4.1 攻击背后的原理是什么很多时候如果我们的网站允许别人上传文件那么文件可能是可执行的脚本可能是病毒或者木马文件如果是脚本的话可能会在服务器执行搞很多破坏比如黑客黑掉你的服务器勒索你给他比特币之类的。4.2、如何防止文件上传中的黑客攻击对于文件上传这块核心的就是要进行白名单校验限制上传文件的类型只能是我们指定的而且要限制文件的大小还要对文件重命名限制文件类型不能简单的根据后缀来判断可能后缀被篡改了要根据文件二进制数据的开头几个字节代表的magic number魔数来判断文件的类型。比如 FFD8FF代表JEPG格式89504E47代表PNG。比如说你的网站要求用户只能上传word类型png类型此时你就限制仅仅这几种文件是可以上传的其他的类型的文件都不让上传。而且最好对文件进行一定的压缩这样可以破坏原来的文件结构避免文件在服务器执行利用imagemagick这种开源包可以很方便进行文件缩放。5、DDoS攻击5.1 背后攻击的原理是什么DDoSdistributed denial of service分布式拒绝服务攻击最可怕的黑客攻击可以把你的网站、APP、系统给搞瘫痪了。对于Dos攻击注意是Dos攻击不是DDos攻击就是说黑客知道你的服务器地址了然后你的系统假设每秒就抗下1000请求黑客就以每秒1000请求访问你你的服务器线程资源全部打满正常用户根本无法发送请求你的网站就宕机了甚至他以每秒1万请求攻击你的服务器呢那就的系统机器就挂了。DoS攻击是一对一的就是黑客搞一台高性能服务器拼命发送请求给你的一台服务器但是如果你的服务器配置超高每秒抗1万请求结果黑客的机器每秒才5000请求那么就没用了。DDoS的意思就是黑客控制大量的机器比如普通人的电脑或者是一些公司的服务器被他的一些木马植入给控制了就是所谓的“肉鸡”然后黑客下达指令让所有肉鸡一起发送请求给攻击目标直接搞瘫你的服务器。5.2 DDos攻击的方式有哪些1基于SYN Flood模式的DDoS****攻击SYN Flood模式的DDoS攻击是通过TCP三次握手的漏洞来进行攻击的。TCP握手的流程客户端发送一个SYN请求指明客户端的端口号以及TCP连接的初始序列号。服务器收到SYN后返回一个SYNACK表示请求被接收TCP序列号加1.客户端收到服务器的SYNACK后返回一个ACK给服务器TCP序列号加1连接建立完毕接着可以通信了。如果服务器没有收到第三步的ACK会重试步骤二返回SYNACK给客户端每隔30s重试一次重试3~5次遍历等待列表再次重试发送SYNACK。服务器只要返回SYNACK给客户端就会为客户端预留一部分资源重试期间都保留等待更客户端建立连接。所以太多的客户端来建立连接就会导致服务端资源耗尽就会导致无法建立新的TCP连接了。所以黑客就会根据这个漏洞伪装大量的不同的ip地址去发送SYN请求一台服务器建立TCP连接每次服务器返回SYNACK黑客就是不会响应返回ACK导致服务器可能为了黑客建立了大量的半连接放在等待列表里占用大量资源还得不停的去重试一旦服务器资源耗尽那么征程的请求过来是无法建立TCP连接的也就无法发送http请求。2基于DNS Query Flood和HTTP Flood的DDoS攻击DNS Query Flood攻击就是通过伪造大量的域名解析请求发送给DNS服务器然后DNS服务器必然没有接着就会去找上级DNS服务器一直到根域名服务器。这么做必然会导致DNS服务器的资源耗尽其他正常用户浏览网页也需要解析域名此时就没法访问DNS服务器了。HTTP Flood就是直接在互联网上找大量的HTTP代理说白了其实有很多公司提供HTTP代理服务你可以控制那些HTTP代理服务器去给目标服务器发送大量的HTTP请求导致目标服务器挂掉。5.2 如何防止DDoS攻击防止DDos攻击其实挺难的这其实是非常专业的一种攻击手段通常我们可以采购云厂商的安全服务比如DDoS高防IP可以把攻击流量都导入到云厂商的高防IP的服务器上去他们有专业的技术方案和算法来防御。《网络安全从零到精通全套学习大礼包》96节从入门到精通的全套视频教程免费领取如果你也想通过学网络安全技术去帮助就业和转行我可以把我自己亲自录制的96节 从零基础到精通的视频教程以及配套学习资料无偿分享给你。网络安全学习路线图想要学习 网络安全作为新手一定要先按照路线图学习方向不对努力白费。对于从来没有接触过网络安全的同学我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线大家跟着这个路线图学习准没错。配套实战项目/源码所有视频教程所涉及的实战项目和项目源码学习电子书籍学习网络安全必看的书籍和文章的PDF市面上网络安全书籍确实太多了这些是我精选出来的面试真题/经验以上资料如何领取26034045b97ae8ac36b2a650.png)以上资料如何领取文章来自网上侵权请联系博主