• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

JSP安全编程实例浅析

发布: 2009-6-10 09:57 | 作者: 不详 | 来源: 测试时代采编 | 查看: 67次 | 进入软件测试论坛讨论

领测软件测试网

Java Server Page(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这个文
件。管理员提交 
http://www.somesite.com/yyforum/modifyuser_manager.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:useBean id="myBasket" class="BasketBean"> 
<jsp:setProperty name="myBasket" property="*"/> 
<jsp:useBean> 
<html> 
<head><title>Your Basket</title></head> 
<body> 
<p> 
You have added the item 
<jsp::getProperty name="myBasket" property="newItem"/> 
to your basket. 
<br/> 
Your total is $ 
<jsp::getProperty name="myBasket" property="balance"/> 
Proceed to <a href="checkout.jsp">checkout</a> 

  

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: Jsp JSP jsp 浅析 实例

41/41234>

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网