在一个登录页面随意输入一个账号,密码输入如下格式:
* 用户名: abc
* 密码:abc' or '1'='1
- 登录成功(若登陆成功则为SQL注入)
以上随意输入一个用户名和密码,登陆成功了,这种现象被称为SQL注入现象!
导致SQL注入的原因是?如何解决? -
导致SQL注入的根本原因是: - 用户不是一般的用户,用户是懂的程序的,输入的用户信息以及密码信息 中含有SQL语句的关键字,这个SQL语句的关键字和底层的SQL语句进行“字符创的拼接” 导致原SQL语句的含义被扭曲了,
最最最主要的原因是:用户提供的信息参与了SQL语句的编译
java.sql.Statement接口的特点:
先进行字符串的拼接,然后再进行SQL语句的编译
- 优点:使用Statement可以进行SQL语句的拼接
- 缺点:因为拼接 的存在,导致可能给不法分子机会,导致SQL注入
java.sql.PrepardStatement接口的特点:
先进行SQL语句的编译,然后再进行SQL语句的传值
-
优点:避免SQL注入
-
缺点:没有办法进行SQL语句的拼接,只能给SQL语句传值
-
PrepardStatement预编译的数据操作对象 -
即使用户信息中有SQL关键字,但是只要不参加编译就没事
本文揭示SQL注入现象,解释其由程序用户输入恶意SQL语句引起。讲解java.sql.Statement与PreparedStatement的区别,以及如何通过PreparedStatement预防注入。

被折叠的 条评论
为什么被折叠?



