當前位置:成語大全網 - 書法字典 - mybatis中$的sql註入如何解決?

mybatis中$的sql註入如何解決?

# {}解析為JDBC預準備語句的參數標記。

例如,sqlMap中的以下sql語句

select * from user where name = # { name };

解析為:

select * from用戶名=?;

# {}被解析為參數占位符?。

$ {}只替換為壹個純斷字符串,變量替換將在動態SQL解析階段進行。

例如,sqlMap中的以下sql

select * from用戶,其中name =“$ { name }”;

當我們傳遞的參數是“ruhua”時,上面的sql被解析為:

select * from user其中name =“ruhua“;

預編譯前的SQL語句不再包含變量名。

綜上所述,$ {}的變量替換階段是在動態SQL解析階段,而# {}的變量替換是在DBMS中。

註意:$ {}在預編譯前已被變量替換,這將導致sql註入問題。