📜  SQL注入

📅  最后修改于: 2021-09-10 02:29:16             🧑  作者: Mango

SQL 注入是一种用于通过将 SQL 命令作为语句注入来通过网页输入利用用户数据的技术。基本上,这些语句可被恶意用户用来操纵应用程序的 Web 服务器。

  • SQL 注入是一种可能会破坏数据库的代码注入技术。
  • SQL 注入是最常见的网络黑客技术之一。
  • SQL 注入是通过网页输入在 SQL 语句中放置恶意代码。

Web 应用程序中 SQL 注入的利用

Web 服务器在需要检索或存储用户数据时随时与数据库服务器通信。攻击者设计的 SQL 语句可以在 Web 服务器从应用程序服务器获取内容时执行。它损害了 Web 应用程序的安全性。

SQL注入示例
假设我们有一个基于学生记录的应用程序。任何学生都可以通过输入唯一的私人学生 ID 来查看他或她自己的记录。假设我们有一个如下所示的字段:
学生卡:

学生在输入字段中输入以下内容:
12222345 或 1=1

所以这基本上转化为:

SELECT * from STUDENT where 
STUDENT-ID == 12222345 or 1 = 1

现在这个1=1将返回所有符合此条件的记录。所以基本上,所有的学生数据都被泄露了。现在恶意用户也可以以类似的方式删除学生记录。

考虑以下 SQL 查询。

SELECT * from USER where 
USERNAME = “” and PASSWORD=”” 

现在,恶意者可以巧妙地使用“=”运算符来检索隐私和安全的用户信息。因此,在执行以下查询时,不是上述查询,而是检索受保护的数据,不打算向用户显示。

Select * from User where 
(Username = “” or 1=1) AND 
(Password=”” or 1=1).

由于1=1始终成立,因此用户数据会受到损害。

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

防止 SQL 注入

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

基本 SQL 注入和缓解示例