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