博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis 防止 % _ sql 注入攻击 解决方法
阅读量:4005 次
发布时间:2019-05-24

本文共 1871 字,大约阅读时间需要 6 分钟。

首先说思路,在mybatis中防止sql注入,目前只能在Controller层进行转义,后台sql进行查询,然后在controller层转义回来,返回到前台。

理论上应该可以在dao.xml中进行判断   但是目前还没写出来。Orz

上代码

@RequiresPermissions("member:member:view")	@RequestMapping(value = {"list", ""})	public String list(Member member, HttpServletRequest request, HttpServletResponse response, Model model) {		/** -- 以下 防止sql%注入 故对其进行转化---- **/		String companyName = member.getCompanyName();		String loginName = member.getLoginName();		if (companyName != null ) {			if(companyName.contains("%")){				member.setCompanyName(companyName.replaceAll("\\%", "\\\\%"));			}			if(companyName.contains("_")){				member.setCompanyName(companyName.replaceAll("\\_", "\\\\_"));			}		}		if (loginName != null) {			if (loginName.contains("%")) {				member.setLoginName(loginName.replaceAll("\\%", "\\\\%"));			}			if (loginName.contains("_")) {				member.setLoginName(loginName.replaceAll("\\_", "\\\\_"));			}		}				/** --  转化完毕 -- **/		Page
page = memberService.findPage(new Page
(request, response), member); /**-- 将转化的字符恢复原来的值 --**/ if (companyName != null) { member.setCompanyName(companyName); } /**-- 将转化的字符恢复原来的值 --**/ if (loginName != null) { member.setLoginName(loginName); } model.addAttribute("page", page); return "dsp/member/memberList"; }

sql

sql这里主要是用 ESCAPE 进行转义

'%'||#{companyName}||'%' ESCAPE '\'
'%'||#{loginName}||'%' ESCAPE '\'

转载地址:http://ecgyi.baihongyu.com/

你可能感兴趣的文章
Vue-子组件改变父级组件的信息
查看>>
Python自动化之pytest常用插件
查看>>
Python自动化之pytest框架使用详解
查看>>
【正则表达式】以个人的理解帮助大家认识正则表达式
查看>>
性能调优之iostat命令详解
查看>>
性能调优之iftop命令详解
查看>>
非关系型数据库(nosql)介绍
查看>>
移动端自动化测试-Windows-Android-Appium环境搭建
查看>>
Xpath使用方法
查看>>
移动端自动化测试-Mac-IOS-Appium环境搭建
查看>>
Selenium之前世今生
查看>>
Selenium-WebDriverApi接口详解
查看>>
Selenium-ActionChains Api接口详解
查看>>
Selenium-Switch与SelectApi接口详解
查看>>
Selenium-Css Selector使用方法
查看>>
Linux常用统计命令之wc
查看>>
测试必会之 Linux 三剑客之 sed
查看>>
Socket请求XML客户端程序
查看>>
Java中数字转大写货币(支持到千亿)
查看>>
Java.nio
查看>>