预防jsp空间中get方式传递参数被修改的办法
2013/4/7 7:59:42 | 阅4150 | 来源:好空间网络 [打印] [关闭] |
我们在使用jsp中,经常会用get方式传递参数!get方式虽然方便,但是也容易被别人修改,因为他可以在浏览器的url地址中看见你传递的参数!
为了预防这个问题我特地去看了腾讯网易这些大公司是怎么做的!!找了几天终于找到比较满意的答案
如果传递的只是数字,比如news.jsp?id=786,这个123就是新闻在数据库里的id,用户入把他修改为124 他只是显示另外条新闻而已,对我们没有什么影响,所以这个就可以简单的验证
id = request.getParameter("id"); if(id==null || id==""){ response.sendRedirect("index.htm");//判断用户有没有输入数字,如果没有就把浏览器导向主页 return; } if(id.matches("^[0-9]+$")) {} else { response.sendRedirect("index.htm");//判断输入的是不是数字,如果不是就把浏览器导向主页 return; }
这样就可以了,当用户没有输入后面的数字后,把他转到主页,当用户修改后面的数字为英文或者一些sql注入的脚本,也把他转到主页上去,只允许id等于数字!
还有另外种可能就是传递的不仅仅是数字,也可以是汉字,英文字母或者特殊符号等,这个时候就不能用上面的方法了,需要以另外种方法处理,由于篇幅的问题我在下一节里和大家探讨下这个问题!!!