1、什么是SQL注入?

SQL是一种解释型语言。如果 Web 应用程序构建 SQL 语句的方法不安全,就很可能会受到 SQL 注入攻击。严重时,攻击者可利用该方法修改数据库里的所有信息,甚至控制运行数据库的服务器。因此 Web 应用程序很容易因为SQL注入而被入侵。

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令的目的。

我们把 SQL 注入当成一道填空题的话,那么它们的形式大概如下:

问:select * from username = ____ and password=_____

答:select * from username = "test" or ""="" and password="123456"

SQL注入攻击包括通过从客户端到应用程序的输入数据点来插入或“注入”SQL查询。成功的SQL注入漏洞可以从数据库读取敏感数据,修改数据库数据(插入/更新/删除),对数据库执行管理操作(例如关闭DBMS),恢复DBMS文件上存在的给定文件的内容系统,并在某些情况下向操作系统发出命令。

成功的SQL注入攻击可以读取敏感的服务器数据,例如密码,电子邮件,用户名等。所以,SQL注入漏洞可能造成非常严重的后果。

2、SQL注入的今生

现代的Web应用程序已经不太容易实现SQL注入,因为开发者通常都会使用成熟的框架和ORM。程序员只需要拿过来用即可,无需考虑太多SQL注入的问题。

ORM是一种对象关系映射的开发方式,将代码中的对象及其属性与数据库中的表和字段链接在一起。ORM映射允许将数据库关系表表示为普通对象,并将其视为对象。

ORM也允许您分离数据库和应用程序任务,因此开发者甚至不需要编写SQL查询,而只需面向对象执行操作,而操作相应的SQL查询将由ORM库生成。

显然,使用ORM便无需手动编写数百个SQL查询,极大地简化了开发地过程,尤其是在大型项目中。虽然ORM本身并不能防止注入,但是当正确使用时,它会支持比较安全地内置语句和参数化查询。

标签: none

添加新评论