个性化阅读
专注于IT技术分析

SQL注入

本文概要

SQL注入是一个代码渗透技术,可能造成的损失我们的数据库。这是最实行网络黑客技术放置在SQL语句中的恶意代码之一,通过网页输入。 SQL注入可用于通过恶意用户操作应用程序的Web服务器。

SQL注入通常,当我们要求用户输入自己的用户名/用户ID发生。取而代之的名称或ID,用户给我们的SQL语句,我们会在不知不觉中对我们的数据库上运行。对于示例 – 我们通过增加变量“demoUserID”选择字符串创建SELECT语句。变量将是从用户输入(getRequestString)取出。

demoUserI = getrequestString("UserId");
demoSQL = "SELECT * FROM users WHERE UserId =" +demoUserId;

SQL注入攻击类型

SQL注入可以比通过登录算法其他更多的伤害。一些SQL注入攻击包括:

  • 更新,删除和插入数据:一个攻击可以修改cookies来毒害Web应用程序的数据库查询。
  • 它是一个可以下载和安装恶意程序,如木马程序在服务器上执行命令。
  • 我们出口,如信用卡资料,电邮,以及攻击者的远程服务器口令有价值的数据。
  • 获取用户的登录信息:这是SQL注入的最简单形式。 Web应用通常通过表单接受用户输入,和前端将用户输入传递到用于处理的后端数据库。

SQL注入的示例

我们根据员工记录的应用程序。任何员工都可以通过输入一个独特的和私人的员工ID只能查看自己的记录。我们有一个像雇员ID字段。而员工输入的输入字段中输入以下:

236893238或1 = 1

这将转化为:

SELECT * from EMPLOYEE where EMPLOYEE_ID == 236893238 or 1=1

上面的SQL代码是有效的,并会从EMPLOYEE表返回EMPLOYEE_ID行。 1 = 1将返回此成立的所有记录。所有员工数据被泄露;现在,恶意用户也可以同样删除员工记录。

例:

SELECT * from Employee where (Username == "" or 1=1) AND (Password="" or 1=1).

现在,恶意用户可以使用“=”操作理智来获取隐私和安全的用户信息。因此,而不是查询上面提到的,下面的查询,筋疲力尽的时候,检索受保护的数据,不是要显示给用户。

SELECT * from EMPLOYEE where (Employee_name =" " or 1=1) AND (Password=" " or 1=1)

SQL注入基础上成批的SQL语句

一些数据库的支持批处理SQL语句。它是一组用分号分隔的两个或多个SQL语句。

下面给出的SQL语句将Employee表返回所有行,然后删除Employee_Add表。

SELECT * From Employee; DROP Table Employee_Add

如何检测SQ​​L注入攻击

创建一个SQL注入攻击并不难,但即使是最好的和善意的开发者犯错误。 SQL注入检测,因此,创建一个SQL注入攻击的风险的一个重要组成部分。 Web应用防火墙可以检测和拦截的基本SQL注入攻击,但我们应该依赖于它作为唯一的预防措施。

入侵检测系统(IDS)是两种基于网络和基于主机。它可以调整到检测SQL注入攻击。基于网络的IDSec可以监视到我们的数据库服务器的所有连接,和标志可疑的活动。基于主机的IDS可以监视Web服务器日志和警报时,奇怪的事情发生。

SQL注入的影响

入侵者可以获取所有存在于数据库中的用户数据,如用户的详细信息,信用卡信息,社会安全号码,也可以访问受保护的领域,如管理员门户。也可以从表中删除用户数据。这些天来所有的网上购物应用,银行交易使用后端数据库服务器。如果入侵者可以利用SQL注入,整个服务器被攻破。

如何防止SQL注入攻击

  • 我们应该通过预先限定的长度,输入类型,以及输入字段中使用用户认证,以验证来自用户的输入。
  • 限制用户的访问权限,并限定任何局外人可以从数据库中访问的数据的量。通常,用户不能获准访问数据库中的一切。
  • 我们不应该使用系统管理员帐户。

赞(0)
未经允许不得转载:srcmini » SQL注入

评论 抢沙发

评论前必须登录!