目录
(1)预编译(PreparedStatement)(JSP)
以下所有代码的环境:MySQL5.5.20+PHP
SQL注入是因为后台SQL语句拼接了用户的输入,而且Web应用程序对用户输入数据的合法性没有判断和过滤,前端传入后端的参数是攻击者可控的,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。比如查询、删除,增加,修改数据等等,如果数据库的用户权限足够大,还可以对操作系统执行操作。
SQL注入可以分为平台层注入和代码层注入。前者由不安全的数据库配置或数据库平台的漏洞所致;后者主要是由于程序员对输入未进行细致地过滤。SQL注入是针对数据库、后台、系统层面的攻击!
由于以下的环境都是MySQL数据库,所以先了解点MySQL有关的知识。
- 5.0以下是多用户单操作
- 5.0以上是多用户多操做
在MySQL5.0以下,没有information_schema这个系统表,无法列表名等,只能暴力跑表名。
在MySQL5.0以上,MySQL中默认添加了一个名为 information_schema 的数据库,该数据库中的表都是只读的,不能进行更新、删除和插入等操作,也不能加载触发器,因为它们实际只是一个视图,不是基本表,没有关联的文件。
当尝试删除该数据库时,会爆出以下的错误!