哈哈,JSP的一个小Bug
Resin2.1.4
各位有没有把查询条件作为request的参数传递给一个*.jsp文件?
一般情况,查询条件没有问题的,但是,如果你用了模糊查询,问题就会出来了。不管你用什么办法,%后面的字符都会被解析成乱码。(我主要是在用了中文查询的时候,一直以为是中文的问题,尝试了所有的中文转换办法,后面才想到是这个问题)
解决办法: 把%替换成*, 在jsp文件中再使用replace('*', '%')换回来。
哈哈
问题点数:20、回复次数:8Top
1 楼plovej(把自己变为挣钱的机器)回复于 2005-12-20 20:00:33 得分 3
这个问题我也遇到过啊,用那方法真的可以解决吗?
你是怎么知道的?Top
2 楼funcreal(为中华之崛起而编程)回复于 2005-12-20 20:55:14 得分 6
你们真有创意阿!
<%
String s = "select * from a where a like '%abc%'";
s = java.net.URLEncoder.encode(s,"utf-8");
%>
<a href="jsp4.jsp?sql=<%=s%>">jsp4.jsp</a>
jsp4.jsp
<%
out.print(request.getParameter("sql"));
%>Top
3 楼interhanchi(on the Java Road)回复于 2005-12-20 22:01:18 得分 1
汗!Top
4 楼itjourney(IT之旅)回复于 2005-12-20 22:29:20 得分 3
晕哦,URLEncoder可以解决的。Top
5 楼lfh7788(幽幽)回复于 2005-12-21 13:46:30 得分 3
没人会那么用的,万一别人用给你的参
数中增加其它的SQL,那你就等着人家攻击你吧!
可以在你的库中创建表,创建用户,那你的数据库将。。。Top
6 楼dongdong715(美女追我八条街(抵制日货))回复于 2005-12-21 14:27:08 得分 3
楼上说得是道理,不过可以先控制当前连数据库的权限,,,如果限制为只能SELECT 某个表的话那就应该没问题。Top
7 楼beermonkey(有啤酒肚的猴)回复于 2005-12-21 14:30:01 得分 1
我晕!Top
8 楼StarCraftII(Show me the money)回复于 2005-12-21 18:21:39 得分 0
呵呵,事实上我的JSP处理的不是从页面传过去的参数,我是用VC写的程序中把此参数传过去。因为我在VC中生成参数,所以java.net.URLEncoder.encode是不能用了。
传过去的仅仅是查询的条件而以,也就是Where后面的部分,安全还是没问题的。Top





