
import org.apache.commons.text.StringEscapeUtils;
/**
* 作用:
* 实现绕过web检查,传输sql语句的功能
*
* pom:
* org.apache.commons:commons-lang3:3.12.0
* org.apache.commons:commons-text:1.10.0
*/
public class Main {
public static void main(String[] args) {
String sqlQuery = "select * from data_source where 1=1 <if test=\"id != null and id !=''\"> and id < ${id} </if>";
// 编码 SQL 查询字符串
String encodedSql = encodeSqlString(sqlQuery);
// 模拟传递给前端的过程
System.out.println("Encoded SQL for frontend: " + encodedSql);
// 解码 HTML 实体
String decodedSql = decodeHtmlEntities(encodedSql);
// 打印解码后的 SQL 查询字符串
System.out.println("Decoded SQL from frontend: " + decodedSql);
}
// 编码 SQL 查询字符串的方法
public static String encodeSqlString(String sqlQuery) {
if (sqlQuery == null) {
throw new IllegalArgumentException("SQL query cannot be null");
}
// 使用 StringEscapeUtils.escapeSql() 方法进行 SQL 字符串转义
return StringEscapeUtils.escapeHtml4(sqlQuery);
}
// 解码 HTML 实体的方法
public static String decodeHtmlEntities(String encodedString) {
// 使用 Apache Commons Text 中的 StringEscapeUtils 进行 HTML 实体解码
return StringEscapeUtils.unescapeHtml4(encodedString);
}
}
// 上面的方法前端不好转换,建议还是使用转为16进制的方案
// 也可以使用若依的common模块 EscapeUtil 工具类中提供的方法,转16进制编码进行传输;

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2023-07-26 005--验证码及应用于登录案例,idea技巧之开启热部署..
2023-07-26 004--SpringBoot整合JSP
2023-07-26 003