注: 全文以 MySQL 数据库为例。
1、SQL注入简述
SQL注入(SQL Injection)是指,由于开发人员在编写网站的数据交互代码,也就是拼接的SQL语句时,对用户输入的参数没有做安全过滤,导致用户输入的一些不合法的查询参数被成功解析,并在数据库中执行,窃取数据库内容。
产生原因:
- 构建的SQL语句中包含了不被信任的数据,如用户输入信息等,但是又没有做安全防范。
比如某站点构建的查询语句参数是id值,一般都是传入id = 1、2、3等这类数字,但是当用户非法输入参数:id = 1 and database(),那么就有可能查询出当前的数据库名,以此类推。
SQL注入由于直接对网站的内部数据造成威胁,窃取和修改用户信息,破坏数据的机密性和完整性,因此危害极大,前些年这类漏洞比较多,但是随着各种框架的产生,和程序员本身的安全意识