预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

JSP安全编程实例浅析作者:浊清JavaServerPage(JSP)作为建立动态网页的技术正在不断升温。JSP和ASP、PHP、工作机制不太一样。一般说来,JSP页面在执行时是编译式,而不是解释式的。首次调用JSP文件其实是执行一个编译为Servlet的过程。当浏览器向服务器请求这一个JSP文件的时候,服务器将检查自上次编译后JSP文件是否有改变,如果没有改变,就直接执行Servlet,而不用再重新编译,这样,效率便得到了明显提高。今天我将和大家一起从脚本编程的角度看JSP的安全,那些诸如源码暴露类的安全隐患就不在这篇文章讨论范围之内了。写这篇文章的主要目的是给初学JSP编程的朋友们提个醒,从一开始就要培养安全编程的意识,不要犯不该犯的错误,避免可以避免的损失。另外,我也是初学者,如有错误或其它意见请发帖赐教。一、认证不严——低级失误在溢洋论坛v1.12修正版中,user_manager.jsp是用户管理的页面,作者知道它的敏感性,加上了一把锁:if((session.getValue("UserName")==null)││(session.getValue("UserClass")==null)││(!session.getValue("UserClass").equals("系统管理员"))){response.sendRedirect("err.jsp?id=14");return;}如果要查看、修改某用户的信息,就要用modifyuser_manager.jsp这个文件。管理员提交HYPERLINK"http://www.somesite.com/yyforum/modifyuser...jsp?modifyid=51"\t"_blank"http://www.somesite.com/yyforum/modifyuser...jsp?modifyid=51就是查看、修改ID为51的用户的资料(管理员默认的用户ID为51)。但是,如此重要的文件竟缺乏认证,普通用户(包括游客)也直接提交上述请求也可以对其一览无余(密码也是明文存储、显示的)。modifyuser_manage.jsp同样是门户大开,直到恶意用户把数据更新的操作执行完毕,重定向到user_manager.jsp的时候,他才会看见那个姗姗来迟的显伟创电脑维修示错误的页面。显然,只锁一扇门是远远不够的,编程的时候一定要不厌其烦地为每一个该加身份认证的地方加上身份认证。二、守好JavaBean的入口JSP组件技术的核心是被称为bean的java组件。在程序中可把逻辑控制、数据库操作放在javabeans组件中,然后在JSP文件中调用它,这样可增加程序的清晰度及程序的可重用性。和传统的ASP或PHP页面相比,JSP页面是非常简洁的,因为许多动态页面处理过程可以封装到JavaBean中。要改变JavaBean属性,要用到“<jsp:setProperty>”标记。下面的代码是假想的某电子购物系统的源码的一部分,这个文件是用来显示用户的购物框中的信息的,而checkout.jsp是用来结帐的。<jsp:useBeanid="myBasket"class="BasketBean"><jsp:setPropertyname="myBasket"property="*"/><jsp:useBean><html><head><title>YourBasket</title></head><body><p>Youhaveaddedtheitem<jsp::getPropertyname="myBasket"property="newItem"/>toyourbasket.<br/>Yourtotalis$<jsp::getPropertyname="myBasket"property="balance"/>Proceedto<ahref="checkout.jsp">checkout</a>注意到property="*"了吗?这表明用户在可见的JSP页面中输入的,或是直接通过QueryString提交的全部变量的值,将存储到匹配的bean属性中。一般,用户是这样提交请求的:HYPERLINK"http://www.somesite.com"\t"_blank"http://www.somesite.com/addToBasket.jsp?newItem=ITEM0105342但是不守规矩的用户呢?他们可能会提交:HYPERLINK"http://www.somesite.com"\t"_blank"http://www.somesite.com/addToBasket.jsp?newItem=ITEM0105342&balance=0这样,balance=