SQL 注入:作用机制和防范方法

黑客仅用几串代码就能控制整个网站吗?SQL 注入可能会让某人能够洗劫您的数据库,从管理凭据到客户银行卡详细信息,所有内容悉数窃取。

您的网站或应用程序在编程时只要留下几个弱点,黑客就可以提取出所有您本不想公开的信息。

那么,SQL 注入攻击是什么,可以如何防范?

什么是 SQL?

SQL 是一种编码语言,主要用于从联机数据库中检索信息。它很直观,使用基本的英语单词作为命令,因此易于使用。

例如,试想一下一位正在线购物的顾客,他在商店的搜索栏中输入了单词“鞋子”。在他们启动搜索功能时,后台便会开始进行简单的处理过程。

这样的网站会使用数据库管理系统 (DBMS) ,继而会运行某种形式的 SQL。当客户搜索“鞋子”时,一串代码便通过那种语言被创建出来。这便是 SQL 查询。

这种查询包含一些规范;例如,到哪里进行搜索,以及要检索的内容。它看起来应该像这样:

SELECT name, description FROM products WHERE category = “鞋子”

在这条查询到达数据库时,DBMS 系统将会读取 SQL 查询并知道要在“产品”(products)表中去找。然后,它就可以检索“鞋子”类别中任何项目的名称和描述,并将数据发顾客。如果找到了十个项目,它将会发送十条名称和描述。

这是一个简单的过程。也是麻烦开始的地方。

什么是 SQL 注入?

要执行注入,黑客会尝试在 SQL 字符串中插入一些额外编码。这便是注入。

当然,这并非所有时候都能奏效。网站的 DBMS 会将一些字符作为编码命令读取(例如 SELECT),而另一些字符则被当做普通的单词和字符(在此例中为“鞋子”)。

如果网站的编程无懈可击,搜索编码命令不会造成注入。系统将把命令读作一组无法识别的字符,返回信息显示类似“找不到项目”这样的消息。

但是,如果系统未受保护,它将会把注入的字符作为货真价实的 SQL 命令读取。这就是造成严重情况的问题所在。

黑客无需使用关键字“鞋子”便可以搜索特定的 SQL 命令。字符串形成并发送到数据库时,DBMS 将把被搜索的关键词作为命令读取,并对应执行。

危害

通过使用一种被称作 SQL 盲注入的技术,黑客可以快速准确破解出后台运行的是哪种 DBMS。了解了这一点后,他们将开始使用适当的 SQL 语言。

如果搜索到了正确的编码术语,他们就能够迫使 DBMS 返回包含所有不同数据表的完整清单。有了这些深层次的信息,他们就可以访问每张表格并提取任何他们想要的信息。如果他们找到“用户”表单,麻烦就大了。

UNION 是一条编码命令,允许某人向其主要查询中添加一条额外的查询。这种子查询的结果将被显示在主查询结果的下方。

为此,黑客可以在搜索栏中输入如下内容:

“鞋子” UNION (SELECT username, password FROM users);--"

在后台将生成一个 SQL 字符串,可能就是这个样子:

SELECT name, description FROM products WHERE category = “鞋子” UNION (SELECT username, password FROM users);--

这样,除了返回关键字“鞋子”的结果外,黑客还可以从“用户”表中查看所有用户名和密码。

密码可能会被哈希处理,但是黑客用不了多长时间就能破解它们。如果他们可以确定哪些用户名属于管理员,则可以使用暴力软件快速进入相关帐户并获得对整个应用程序的管理访问权限。

如何防范 SQL 注入

成功的 SQL 注入会造成巨大的危害。黑客可以窃取密码和付款信息,将用户详细信息泄露到网上,并删除基本数据。这样的事件会不可逆转地破坏消费者的信任。如何防范?

  • 输入验证

如果您将输入验证流程构建到您网站的后端编码中,就可以大大地减少这类威胁。您可以创建一个可接受字符的白名单,并对 DBMS 进行编程,识别关键词是否未被列出。如果黑客“搜索”了编码命令,您的系统将对照白名单对其进行检查。如果没有完成匹配,就不会运行代码。

  • 预定义语句

创建预定义语句可能是最佳的策略。易受攻击的网站会在每次黑客搜索某些内容时创建新的 SQL 字符串,但有了预定义语句,就不会发生这种情况。对您的网站后端进行编程时,提前创建您的 SQL 模板,并用问号来代替关键词。可对 DBMS 进行编程读取该问号,就像读取搜索栏中的任何数据一样,但是查询本身则是预制的。这大大降低了恶意 SQL 命令到达数据库的风险。

  • 数据隔离

您的数据隔离程度越高,黑客在一次攻击中可能的斩获就越小。在我们之前讨论过的在线商店的实例中,用户数据与基本产品清单保存在相同数据库,因此,SQL 的弱点就变得更佳致命。将不同种

Monica Webster
验证作者
Monica 是我们内容团队的灵魂人物。她的活泼和创造力让她的文章熠熠生辉。她喜欢研究各种安全相关问题,并给读者带来有用的提示。在不撰写技术文章的时候,她投身于艺术。