正在阅读:JSP安全编程实例浅析JSP安全编程实例浅析

2005-01-19 10:37 出处: 作者:佚名 责任编辑:xietaoming

  二、守好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>

  注意到property="*"了吗?这表明用户在可见的JSP页面中输入的,或是直接通过Query String提交的全部变量的值,将存储到匹配的bean属性中。

  一般,用户是这样提交请求的:

http://www.somesite.com/addToBasket.jsp?newItem=ITEM0105342 

  但是不守规矩的用户呢?他们可能会提交:

http://www.somesite.com/addToBasket.jsp?newItem=ITEM0105342&balance=0 

  这样,balance=0的信息就被在存储到了JavaBean中了。当他们这时点击“chekout”结账的时候,费用就全免了。

  这与PHP中全局变量导致的安全问题如出一辙。由此可见:“property="*"”一定要慎用!

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品