sql注入是黑客常用的方法,如果不解决会在某种程度上造成利益损失,以下为解决方法:
只要用户提供的信息不参与SQL语句的编译过程,问题就解决了.
即使用户提供的信息中含有SQL语句的关键字,但是没有参与编译,不起作用
要想用户信息不参与SQL语句的编译,那么必须使用java.sql.PreparedStatement
PreparedStatement接口继承了java.sql.Statement
PreparedStatement是属于预编译的数据库操作对象
PreparedStatement的原理是:先预先对SQL语句的框架进行编译,然后再给SQL语句传"值"
问题来了,那么解决SQL注入的关键是什么?
用户提供的信息中即使含有sql语句的关键字,但是这些关键字并没有参与编译 不起作用
解决前vs解决后
注:此用户名和密码在数据库中是不存在的