mybatis #{}语法会进行预编译.那执行的sql时候不是还是会执行到吗?他是有检查是吧?
1 个回答
想多了全是问题,想开了全是答案。韩雪- 参数值通过 JDBC 动态绑定,不直接拼接到 SQL 中,避免了恶意 SQL 注入的风险。 - 示例: - 输入参数为:`id = 100 OR 1=1` - 使用 `#{}` 的 SQL: ```sql SELECT * FROM user WHERE id = ? ``` - 实际绑定后: ```sql SELECT * FROM user WHERE id = '100 OR 1=1' -- 参数被当作值处理 ``` - SQL 注入无效。 - 如果使用 `${}`,则会直接拼接,容易引发 SQL 注入。发布于 2024-11-14 22:18 •IP属地 湖南举报评论收藏
公众号进入网站体验更佳

