SQL 注入

SQL 注入是一种针对与数据库关联的网站Web 应用程序的网络攻击。这些攻击利用配置不当的网站和数据库服务器软件,诱使服务器解析本来不会执行的SQL语句。这些攻击可能会泄露敏感的个人和财务信息,使攻击者能够更改或删除数据库中存储的信息,或获得其他未经授权的访问权限。

当网站接受用户在文本表单中的输入,并将其作为 SQL查询的一部分时,该网站就容易受到 SQL 注入攻击。攻击者不会在表单字段中填写预期的信息例如(用户名),而是输入一段能够修改 SQL 查询的文本字符串。例如,假设某个查询可能以SELECT UserID, Name, Password FROM Users WHERE UserID = 开头,后面接着用户 ID 表单字段中的输入。如果用户输入自己的用户 ID,查询就会按预期运行,并显示其信息。

攻击者将意外文本注入查询语句以更改查询
攻击者将意外文本注入查询语句以更改查询

但是,如果服务器不加限制地将输入文本插入查询,攻击者就可以利用这一点修改 SQL 查询语句本身。如果某人输入的不是用户 ID,而是文本317 OR 1=1,查询就会变成SELECT UserID, Name, Password FROM Users WHERE UserID = 317 OR 1=1;。由于OR 1=1的结果始终为真,它会覆盖用户 ID 条件;查询转而返回 Users 表中所有记录的用户 ID、姓名和密码。其他类型的代码注入可能允许攻击者以网站管理员身份登录,从数据库中删除记录,或者(在某些极端情况下)注入并运行 shell脚本及其他代码。

网站管理员可以通过及时更新服务器软件来防止 SQL 注入攻击。此外,还应通过限制输入文本或过滤掉某些字符来“清理”数据库输入。网站管理员还可以对 SQL 查询进行参数化——在查询中使用指向用户输入的占位符,而不是将用户输入直接插入查询。

更新日期 March 20, 2023 作者 Brian P.

quiz测试你的知识

Which language is commonly used to write Android apps?

A
Perl
0%
B
Python
0%
C
Java
0%
D
Swift
0%
Correct! Incorrect!     View the Java definition.
More Quizzes →

Tech Terms 计算机词典

本页中SQL 注入的定义是由 TechTerms.com 的作者撰写的原创定义。如果您想引用本页或引用此定义,请使用定义正下方的绿色引用栏。

我们的目标是以简单易懂的方式解释计算机术语。我们努力使发布的每个定义都做到准确和简明。如果您对本定义有任何反馈,或想建议一个新的技术术语,请联系我们

Tech Terms 通讯

通过我们的每日或每周通讯提升您的技术知识!立即订阅,即可将新术语和测验发送到您的收件箱。

订阅免费的 TechTerms 通讯

您希望多久收到一封电子邮件?

您可以随时使用每封邮件中的链接取消订阅或更改接收频率。 有疑问?请联系我们

注意:通讯以英文发送。