计算机网络:常见的网络攻击方式!黑客惯用的伎俩

黑客与安全

在当今的互联网当中,总是存在着我们看不见也摸不着的一些 “互联网地下工作者”,也就是黑客。黑客的攻击方式分为很多种,有非破坏性攻击和破坏性攻击。非破坏性攻击一般是为了扰乱系统的执行,使之暂时失去​正常正常​对外界提供服务的能力,比如臭名昭著的DDoS攻击等。而破坏性攻击主要会造成两种结果:系统数据受损或者信息被窃取,好比如CSRF攻击等。黑客使用的攻击大致可分为三种,植入病毒式、洪水式(大幅度攻击)、系统漏洞​式​。

​​

​​

他们攻击的特点主要集中于:分布式、高流量、深度匿名。就好比如DDoS攻击,利用的就是国外大量的“肉鸡”计算机的信息没有登记,所以黑客​再​利用“肉鸡”进行互联网攻击,是很难去追寻攻击的地址,无法有效地抵御他们的攻击。虽然说现在云端服务器商开始崛起,能够提供一套完整的安全解决方案,如腾讯云、阿里云等等,都能够提供高防服务器来抵御市面上大多数的DDoS攻击,但是成本略高,对于大多数小中型企业是有点难以承受。

​​

​​

即使这样,互联网企业要想建立一套完整的信息安全体系,都需要遵守CIA原则,分别为保密性(Confidentiality)、完整性(Integrity)、可用性(Availability)。

保密性:​对与​一些涉及用户隐私、有价值的数据进行保密操作,无论是信息存储还是传输过程,都要保证好用户数据及相关资源的安全。值得一提的是,数据加密有些时候不只是防外部的黑客,还需要避免数据管理员在某些利益的驱动下,对数据库里的信息篡改或者泄露,进一步导致黑客利用这些数据进行网站袭击,造成企业的巨大损失。

完整性:用户访问的数据是要完整的,而不是缺失的或是篡改的,不然会导致用户访问到的数据是不正确的。在实际编码中,我们为了保证数据的完整性,通常使用的方法是对数据进行签名校验、加密加盐值等等(比如MD5/SHA和数据签名等)

可用性:服务是能够保证可用的,如果连服务都不能正常使用,保证数据安全更是天方夜谭。而有可能导致服务不可用的一大因素是高并发,针对于这种情况,我们通常使用都是对进入的请求加以约束,如网页操作时间限制、请求限流、数据清洗等方式。

​​

​​

SQL注入

SQL注入是注入式攻击中算是比较常见的了,不过随着开发人员的安全意识普遍提高,开始重视这些问题,再加上MyBatis等框架大幅度推广,SQL注入攻击比以前要少了很多。SQL注入攻击的原理是程序方面未将代码与数据进行严格​的​隔离,导致在请求数据的时候,将数据嵌套到代码中的一部分去执行,从而导致一些意想不到的问题。举个例子,当对用户数据进行修改操作时,直接将未转义的数据当成变量进行操作,代码演示:

updatet_usersetnick_name ="\"# -- !#(@ " where user_id = 123;

OR

select*fromt_userwhere(user_name='1'OR'1'='1')and(password='1'OR'1'='1');

第一种sql语句,会导致t_user表中nick_name全部被修改;第二种情况,会无视账号密码的情况,直接得到用户信息;还有很多种SQL注入的情况,在这里就不一一赘述了。下面讲讲怎么去抵御这种攻击:

过滤出用户在网页输入数据时掺杂的特殊字符,进而避免出现​转义​数据的风险。

业务编码时,避免使用字符串拼接的SQL语句,最好采用参数绑定传入的SQL参数。

合理使用数据库访问框架提供的防注入机制。如MyBatis提供的#{}动态参数,从而有效地防止SQL注入。同时也要注意 的使用, {}的使用, {}相当于占位符,等同于使用字符串拼接SQL。

​​

​​

XSS

XSS攻击,又称跨站脚本攻击,英译为Cross-Site Scripting,这是为了避免跟前端语言CSS的简称冲突,所以另命名为XSS。XSS是指黑客提供某些技术手段,向正常用户请求的网页植入恶意脚本,从而在此基础上执行任意脚本,主要用于信息窃取、破坏等目的。XSS主要分为反射型XSS、存储型XSS和DOM型XSS。

在防范XSS攻击上,主要还是通过在用户输入数据做过滤或转义方面下功夫。后端:可以使用Jsoup框架对输入的字符串进行XSS过滤或者使用Spring框架提供的HtmlUtils工具类对字符串进行HTML转义。前端:尽可能使用innerText而不是innerHTML。

​​

​​

CSRF

CSRF攻击,又称跨站请求伪造,全称为 Cross-Site Request Forgery,也全称为 One-click Attack,即在用户毫不知情的情况下,假冒用户来模拟操作,对已经成功登录的网页上恶意操作,如发表恶意帖子、修改个人信息、群发信息甚至修改密码等等。

虽然从攻击层面上看,两者有很多相似之处,但是CSRF还是有别于XSS的。从技术层面上看,XSS是指黑客在用户请求的网页植入了自己的恶意脚本;而CSRF是指假冒已经成功登录的用户进行 “为所欲为” 的操作。

XSS的关注点是在于用户数据没有进行过滤或转义

CSRF的关注点是在于HTTP接口没有防范不受信任的调用。

防范CSRF攻击主要有以下两种方式:

(1)CSRF Token验证,利用浏览器的同源策略(不同源的客户端脚本无法在没有授权的情况下,直接读取对方资源),在HTTP接口执行前验证页面或者Cookie中设置的Token,只有验证通过才继续执行请求。

(2)人机接口,常见的就是在用户在进行相关重要操作(如修改密码)校验短信验证码

写在最后:对于准备成为一名优秀程序员的朋友,如果你想更好的提升你的编程核心能力(内功),让自己成为一个具有真材实料的厉害的程序员,不妨从现在开始!C/C++,永不过时的编程语言~

微信公众号:C语言编程学习基地

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!

猜你喜欢

转载自juejin.im/post/7016596486351749151