TipsMake.com-在我们大多数用户中,很多人都听说过通过SQL注入的方法攻击、劫持网站的概念-SQLI和(分布式)拒绝服务-DDoS。 所以这个过程实际上是黑客使用的方式,基于黑客可以识别网站上的安全漏洞并在那里进行攻击。在下面的文章中,TipsMake.com 将介绍几个基本点,让人们更多地了解这种相当常见的攻击方法的本质。
拒绝服务攻击:
为了方便DDoS的可视化,请参考下图:
性质:
拒绝服务(也称为分布式拒绝服务或DDoS)是一种一种攻击形式,通常发生在系统(这里指的是web服务器)1次接收到过多的内部访问请求时,系统就会陷入过载,导致运行不稳定,产生许多其他问题。这种DDoS攻击方法的一般目的是使受害者在服务器上托管的网站超过正常流量。
运行机制:
为了理解这个过程,我们来看一个常见的例子。
例如,有成千上万的人(承担攻击-黑客的主要角色)参与干预任何公司的过程X业务通过联系、呼叫支持中心。支持,照顾他们的客户。具体时间定在周二上午 9 点,在大多数情况下,X 的电话系统将无法承受 9:00 的数百万电话,大相径庭。与工作日相比。此外,真正想打电话的客户也无法拨打电话。当然,那家 X 公司的声誉也会受到很大影响。
本质上,DDoS攻击过程也是类似进行的。因为在服务器及时处理之前,几乎没有办法确定黑客或真实客户的访问请求的来源,所以这种方法的效率和成功率非常高。
实施过程:
由于DDoS的极端“暴力”性质,黑客必须准备好多台计算机同时对目标进行攻击.回到上面 X 公司的例子,黑客的关键点是在早上 9 点同时呼叫客户服务中心。但从技术角度来看,当受害者的所有计算机都处于僵尸状态——即被黑客病毒感染和影响时,这个过程是简单易行的。
众所周知,过去曾出现过许多恶意软件和木马的变体。成功渗透到系统后,他们会默默等待合适的时间运行。例如,执行攻击请求的命令将在周二上午 9 点通过 X 公司的 webserver 系统发送给黑客、木马和黑客。可以从被恶意软件感染的计算机对应的许多不同位置创建大量攻击命令。
利用恶意计算机系统的好处被证明是非常有效的,因为黑客将有很多机会隐藏他们的行踪,另一方面是进行攻击时的有效性和成功率.公众更放心。
SQL 注入攻击:
性质:
SQL注入攻击机制-SQLI是一种利用或利用构建网站技术的缺陷和缺点的方法,并且通常黑客会结合进程漏洞数据库安全。如果这次入侵成功,黑客可以冒充用户的公众号,访问数据库并窃取个人信息。与DDoS的方式不同,如果管理员意识到数据库安全的重要性,SQLI 是完全可以预防的。
实施过程:
用户每次登录在线帐户时,都必须提供有关用户名和密码的信息。在对该账户的合法性进行检查和验证的过程中,相应的系统或Web应用会运行1条查询语句,格式如下:
SELECT UserID FROM Users WHERE UserName='myuser' AND Password='mypass';
请注意,SQL 查询 statement 中的值部分必须以单引号 (') 结尾,这就是为什么它们出现在输入的值周围。
该过程要求输入的帐户名(myuser)和密码(mypass)与存储在Users表中的信息的记录相匹配,并且然后返回 UserID 值。如果不匹配,则不返回UserID值,用户输入信息不正确。
接下来我们看一下替代用户在网络上输入的价值的账户验证声明模板。
SELECT UserID FROM Users WHERE UserName='[user]' AND Password='[pass]'
乍一看,很多人会认为这样的账户验证过程是完全合理和准确的。但是,这种结构的微小变化可能是 SQLI 入侵攻击的迹象。
例如'myuser'–'是用户名字段和'wrongpass'输入的值 是密码,替代查询语句模式如下所示:
SELECT UserID FROM Users WHERE UserName='myuser'-'AND Password=' wrongpass'
这里的关键点和标识特征是两个连续的连字符(--),这是SQL通知的起点statement ,这两个破折号后面的任何内容都将被忽略。因此,上述语句将被数据库验证为:
SELECT UserID FROM Users WHERE UserName='myuser'
这里最大的缺点是密码检查,只有2个破折号好像黑客可以完全通过测试过程,并且'公然'用帐户名登录 'myuser' 无需输入相应的密码。接下来将是下一个 SQL 注入 攻击。
损坏程度:
本质上,SQL注入攻击的根源在于应用加密过程中的疏忽,但密码还是可以防范的,但破坏程度是不可预测并且取决于每个数据库的规模。在此过程中,任何 Web 应用程序都可以与后端数据库通信,它必须向数据库提供登录信息(此过程与用户通过表单登录网站时不同。登录)。根据 Web 应用程序所需的相应授权级别,数据库中的帐户可以使用任何编辑权限,从简单的读写到可用表到完全权限。
同样基于上面的例子,我们看到通过输入一个账户名(例如"youruser'-"、"admin'-"或其他) 测试可以直接登录到 数据库 而不知道 密码 。一旦进入,系统将无法知道该帐户是普通帐户还是具有相应的权限。本质上,数据库的去中心化并没有在这个过程中提供相应且安全的确切权限,因为通常网站必须至少具有对相应数据库的读取或写入权限。
假设我们的网站系统拥有完全访问权限,包括删除数据、添加或删除表格、创建新帐户。事实上,有相当多的程序要安装和使用必须去中心化d 在最高级别,因此在分配权限时要小心。
为了进一步说明这种情况下可能造成的损害程度,我们将依靠上图,在用户名 领域:
"Robert '; DROP TABLE Users;-"
只做几处改动,查询语句就变成了:
SELECT UserID FROM Users WHERE UserName='Robert'; Users 'DROP TABLE--' AND Password='wrongpass'
请注意,MySQL中的逗号用于结束旧子句并开始新子句。
上面的命令会进入数据库:
SELECT UserID FROM Users WHERE UserName='Robert'
用户删除表
就这么简单,我们成功实现了一个小型SQLI攻击阶段,主要目的是删除整个Users数据表。
如何防止 SQL 注入:
正如我们在文章上一节中提到的,SQL 注入是完全可以预防的。不可忽视的规则之一是不要绝对信任用户输入的任何信息(类似于我们上面模拟的情况)。
而 SQLI 模型可以通过一个称为清理的步骤轻松阻止-可以理解的是,过滤输入-来自用户的输入信息。非常简单,此过程将处理出现在 SQL 查询 statement 中的任何括号。
比如要在数据库中查找'O'neil'记录,就不能使用上面的模拟方法,因为'after' 符号将导致语法中途中断。相反,我们可以用符号将这个特殊字符与数据库分开。因此,'O'neal' 记录将变成 'O'neil'。
为了更好地理解这个过程,让我们回到上面的例子:
myuser '-/wrongpass:
SELECT UserID FROM Users WHERE UserName='myuser'-'AND Password=' wrongpass'
因为myuser后面的逗号是安全的,所以数据库会继续搜索"myuser'-"的UserName信息> 。此外,破折号(--)包含在数据字符串中,它们将成为搜索信息字符串的一部分,并由相应的SQL语法编译。
Robert '; DROP TABLE 用户;-/错误通过:
SELECT UserID FROM Users WHERE UserName='Robert'; Users 'DROP TABLE--' AND Password='wrongpass'
评论