SQL 注入问题

一、SQL 注入问题 介绍

SQL 注入是一种代码渗透技术,可能会导致我们的数据库丢失。通过网页输入将恶意代码置于 SQL 语句中是最常用的网络黑客技术之一。SQL 注入可用于被恶意用户操纵应用程序的 Web 服务器。

当我们要求用户输入他们的用户名/用户 ID 时,通常会发生 SQL 注入。用户给了我们一个 SQL 语句,而不是名称或 ID,我们将在不知不觉中在我们的数据库上运行该语句。例如 - 我们通过添加一个变量“demoUserID”来选择一个字符串来创建一个 SELECT 语句。该变量将从用户输入 (getRequestString) 中获取。

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

二、SQL注入攻击的类型

除了通过登录算法之外,SQL 注入还会造成更大的危害。一些 SQL 注入攻击包括:

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

三、SQL 注入问题 示例

我们有一个基于员工记录的应用程序。任何员工都可以通过输入唯一的私有员工 ID 来查看自己的记录。我们有一个像员工 ID 这样的字段。员工在输入字段中输入以下内容:

236893238 or 1=1

SQL语句将会转变为:

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

现在,恶意用户可以明智地使用“=”运算符来检索隐私和安全的用户信息。因此,下面的查询不是上面提到的查询,而是在用尽时检索受保护的数据,而不是向用户显示。

四、基于批处理 SQL 语句的 SQL 注入

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

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

SELECT * From Employee; DROP Table Employee_Add

五、如何检测 SQL 注入攻击

创建 SQL 注入攻击并不难,但即使是最优秀和善意的开发人员也会犯错误。因此,SQL 注入检测是造成 SQL 注入攻击风险的重要组成部分。Web 应用程序防火墙可以检测和阻止基本的 SQL 注入攻击,但我们应该将其作为唯一的预防措施。

入侵检测系统 (IDS) 既基于网络又基于主机。可以对其进行调整以检测 SQL 注入攻击。基于网络的 IDSec 可以监控到我们数据库服务器的所有连接,并标记可疑活动。基于主机的 IDS 可以监控 Web 服务器日志并在发生异常情况时发出警报。

六、SQL 注入的影响

入侵者可以检索数据库中存在的所有用户数据,例如用户详细信息、信用卡信息和社会安全号码,还可以访问管理员门户等受保护区域。也可以从表中删除用户数据。如今,所有的在线购物应用程序、银行交易都使用后端数据库服务器。如果入侵者可以利用 SQL 注入,则整个服务器都会受到威胁。

七、如何防止 SQL 注入攻击

  • 我们应该通过预先定义长度、输入类型和输入字段来使用用户身份验证来验证来自用户的输入。
  • 限制用户的访问权限并定义任何外部人员可以从数据库访问的数据量。通常,不能授予用户访问数据库中所有内容的权限。
  • 我们不应该使用系统管理员帐户。

热门文章

优秀文章