网络安全

281 阅读6分钟

XSS

xss详细介绍

CSRF

CSRF详细介绍

SQL注入

介绍

SQL注入攻击指的是攻击者通过构造并提交特殊的数据库语句到过滤不严谨的程序中,实现影响程序数据库执行功能的一种漏洞攻击。通俗的说,SQL注入攻击就是程序需要对用户提交的数据结合SQL语句进行数据可查询,但是却对用户提交的数据过滤不严谨,导致用户可以简介而非法的提交SQL语句进行特殊的数据库查询。由于SQL注入语句的提交是通过正常的客户端应用来提交的,而且SQL语句的构造非常灵活多变,因此。常常被攻击者绕过而没有被传统的防火墙阻断。

SQL 注入攻击有可能会造成以下等影响。

  • 非法查看或篡改数据库内的数据
  • 规避认证
  • 执行和数据库服务器业务关联的程序等

实例

  • 字符串内联注入

    有以下SQL查询语句:

    SELECT * FROM TableName WHERE username = '{UserName}' AND password = '{PassWord}' ;

    当Username输入了' OR '1' = '1, 相同的Password输入了' OR '1' = '1时,SQL为以下语句:

    SELECT * FROM TableName WHERE username = '' OR '1' = '1' AND password = '' OR '1' = '1';

    因为OR '1' = '1'恒为true,所以可以达到获取全部数据的目的。

  • 数字值内联注入

    有以下SQL查询语句:

    SELECT * FROM TableName WHERE id = {ID} ;

    当输入1 or 1 = 1时,SQL为以下语句:

    SELECT * FROM TableName WHERE id = 1 or 1 = 1 ;

    因为1 = 1恒为true, 会返回所有数据。

  • 终止式SQL注入

    有以下SQL查询语句:

    SELECT * FROM TableName WHERE username = '{UserName}' AND password = '{PassWord}' ; 在数据库中有以下注释语法:

    数据库类型 注释语法 描述
    SQL Server,Oracle -- (双连字符) 用于单行注释
    PostgreSQL /* */ 用于多行注释
    PostgreSQL -- (双连字符 用于单行注释,要求第二个字符跟一个空格或控制字符
    MySQL # 用于单行注释
    MySQL /* */ 用于多行注释

    当输入admin'/*' AND password='*/'时,SQL为以下语句:

    SELECT * FROM TableName WHERE username='admin'/*' AND password='*/'';

    实际解释为:

    SELECT * FROM TableName WHERE username='admin' '';

    这样就能获取admin用户的所有数据

预防

  • PreparedStatement,采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。

    sql注入只对sql语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理, 而不再对sql语句进行解析,准备,因此也就避免了sql注入问题

  • 使用正则表达式过滤传入的参数

  • 字符串过滤

DDoS

介绍

DDos的前身 DoS (DenialofService)攻击,其含义是拒绝服务攻击,这种攻击行为使网站服务器充斥大量的要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷而停止提供正常的网络服务。而DDoS分布式拒绝服务,则主要利用Internet上现有机器及系统的漏洞,攻占大量联网主机,使其成为攻击者的代理。当被控制的机器达到一定数量后,攻击者通过发送指令操纵这些攻击机同时向目标主机或网络发起DoS攻击,大量消耗其网络带和系统资源,导致该网络或系统瘫痪或停止提供正常的网络服务。由于DDos的分布式特征,它具有了比Dos远为强大的攻击力和破坏性。

攻击方式

  • SYN/ACK Flood攻击

    这种攻击方法是经典有效的DDoS攻击方法,可通杀各种系统的网络服务,主要是通过向受害主机发送大量伪造源P和源端口的SYN或ACK包,导致主机的缓存资源被耗尽或忙于发送回应包而造成拒绝服务,由于源都是伤造的故追踪起来比较困难,缺点是实施起来有一定难度,需要高带宽的僵尸主机支持,少量的这种攻击会导致主机服务器无法访问,但却可以Ping的通,在服务器上用Netstat-na命令会观察到存在大量的 SYN RECEIVED状态,大量的这种攻击会导致Ping失败,TCP/IP栈失效,并会出现系统凝固现象,即不响应键盘和鼠标。普通防火墙大多无法抵御此种攻击。

  • TCP全连接攻击

    这种攻击是为了绕过常规防火墙的检查而设计的,一般情况下,常规防火墙大多具备过滤TearDrop、Land等DOS攻击的能力,但对于正常的TCP连接是放过的,殊不知很多网络服务程序(如:IIS、 Apache等Web服务器)能接受的TCP连接数是有限的,一旦有大量的TCP连接,即便是正常的,也会导致网站访问非常缓慢甚至无法访问,TCP全连接攻击就是通过许多僵尸主机不断地与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽面被拖跨,从而造成拒绝服务,这种攻击的特点是可绕过一般防火墙的防护而达到攻击目的,缺点是需要找很多僵尸主机,并且由于僵尸主机的IP是暴露的,因此此种DDOs攻击方容易被追踪。

  • 服务消耗性攻击

    相比资源消耗类攻击,服务消耗类攻击不需要太大的流量,它主要是针对服务的特点进行精确定点打击,如web的CC,数据服务的检索,文件服务的下载等。这类攻击往往不是为了拥塞流量通道或协议处理通道,它们是让服务端始终处理高消耗型的业务的忙碌状态,进而无法对正常业务进行响应,详细示意图如下:

  • 混合型攻击

防护手段

  • 采用高性能的网络设备,架设硬件防火墙,专门过滤请求

  • 充足的网络带宽保证

  • 升级主机服务器硬件

  • 大数据智能分析

    黑客为了构造大量的数据流,往往需要通过特定的工具来构造请求数据,这些数据包不具有正常用户的一些行为和特征。为了对抗这种攻击,可以基于对海量数据进行分析,进而对合法用户进行模型化,并利用这些指纹特征,如:Http模型特征、数据来源、请求源等,有效地对请求源进行白名单过滤,从而实现对DDoS流量的精确清洗。

参考文章

图解HTTP

www.ixueshu.com/document/84…

juejin.cn/post/684490…

blog.csdn.net/qq_34638225…

zhuanlan.zhihu.com/p/148018483

www.jianshu.com/p/e7a5fdc67…