浅谈Java下SQL注入问题

SQL注入

  • 什么是SQL注入
  • Mybatis下SQL注入
  • 如何解决SQL注入

什么是SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

Mybatis下SQL注入

Mybatis的SQL语句可以基于注解的方式写在类方法上面,更多的是以xml的方式写到xml文件。Mybatis中SQL语句需要我们自己手动编写或者用generator自动生成。

编写xml文件时,Mybatis支持两种参数符号,一种是#,另一种是$
Java开发站点大多是预编译,相应的sql注入会少,但是仍然存在。在预编译获取参数使用的是#号,$是拼接意思,在像like,in 这种使用不规范#符会报错,所以会使用$,就会有机会产生SQL注入问题。

先看看简单的例子:

  • 正常情况:
--简单的查询语句,使用#
select id,name from user where id = #{id}

这里的id是前端传入的参数(假设为 1),正常执行日志是:

你可能感兴趣的:(java,MySQL,java,sql,mysql)