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属地 湖南
    举报
    评论
    收藏