簡體   English   中英

MyBatis保護字符串替換參數免受SQL注入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM