SQL注入漏洞
SQL注入攻击是由于SQL语句的调用方案不完善而产生的安全隐患。一旦应用在存在SQL注入漏洞,就可能产生一下影响:
- 数据库的内容被外界窃取
- 数据库内容被篡改
- 登陆认证被绕过
- 其他,例如服务器上的文件被读取或修改、服务器上的程序被执
产生SQL注入漏洞的根本原因是:被指定为参数的字符串部分被排除出字面量,导致SQL语句发生变化。
防范对策
使用占位符拼接SQL语句。
占位符依据实现方法分为静态占位符和动态占位符。理论上,静态占位符能够完全小吃SQL注入漏洞的可能性,尽量采用静态占位符。
Java+MySQL的安全连接方式
java连接数据库MySQL时使用JDBC驱动的MySQLConnector/J。这一组合默认使用的是动态占位符,因此修改如下代码给位使用静态占位符。
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/dbname?user=xxx&password=xxx&userServerPrepStmts=true&useUnicode=true&characterEncoding=utf-8")