[英]MyBatis protect String Substitution parameter from sql injection
我需要在MyBatis ${myValue)
使用字符串替换来保护(自动)请求。
从我所看到的来看,替换是使用TokenHandler.handleToken
方法在GenericTokenParser
类中自动完成的。
关于这些价值,我找不到任何东西。 我可以使用以下方法访问PreparedStatement参数
sqlSession.getConfiguration().getMappedStatement(statement).getBoundSql(parameter).getParameterMappings()
但是我确实需要在发送请求之前检索${}
参数,以便能够在需要时修改值,以防止受到SQL Injection的攻击。
我虽然要使用AspectJ来拦截TokenHandler.handleToken
方法。 但是我真的更希望能够注入自己的处理程序或令牌解析器。
有线索吗?
我正在为将来的开发制定“框架”,目的是要自动化。 遍历整个参数对象不是一个选择(可能很繁重),我们只想在执行请求之前保护那些在请求中使用的对象。
MyBatis有2种替代方法。 ${}
方法直接进行字符串替换(即属性替换),因此容易受到SQL注入的攻击。 #{}
方法在PreparedStatement
上进行参数替换,因此它不容易受到攻击。
您确定要使用${}
吗? 除非您动态构建SQL语句,否则可能要使用#{}
。 如果要构建动态SQL,则应在加载MyBatis配置之前验证参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.