- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JSP安全编程实例浅析new
JSP安全编程实例浅析
Java Server Page(JSP)作为建立动态网页的技术正在不断升温。JSP和ASP、PHP、工作机制不太一样。一般说来,JSP页面在执行时是编译式,而不是解释式的。首次调用JSP文件其实是执行一个编译为Servlet的过程。当浏览器向服务器请求这一个JSP文件的时候,服务器将检查自上次编译后JSP文件是否有改变,如果没有改变,就直接执行Servlet,而不用再重新编译,这样,效率便得到了明显提高。
今天我将和大家一起从脚本编程的角度看JSP的安全,那些诸如源码暴露类的安全隐患就不在这篇文章讨论范围之内了。写这篇文章的主要目的是给初学JSP编程的朋友们提个醒,从一开始就要培养安全编程的意识,不要犯不该犯的错误,避免可以避免的损失。
一、认证不严——低级失误
在一论坛中, 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这个文件。管理员提交
/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属性,要用到“”标记。
下面的代码是假想的某电子购物系统的源码的一部分,这个文件是用来显示用户的购物框中的信息的,而checkout.jsp是用来结帐的。
You have added the item to your basket.
Your total is $
Proceed to checkout
注意到property=*了吗?这表明用户在可见的JSP页面中输入的,或是直接通过Query String提交的全部变量的值,将存储到匹配的bean属性中。
一般,用户是这样提交请求的:
/addToBasket.jsp?newItem=ITEM0105342
但是不守规矩的用户呢?他们可能会提交:
/addToBasket.jsp?newItem=ITEM0105342balance=0
这样,balance=0的信息就被在存储到了JavaBean中了。当他们这时点击“chekout”结账的时候,费用就全免了。
这与PHP中全局变量导致的安全问题如出一辙。由此可见:“property=*”一定要慎用!
三、长盛不衰的跨站脚本
跨站脚本(Cross Site Scripting)攻击是指在远程WEB页面的HTML代码中手插入恶意的JavaScript, VBScript, ActiveX, HTML, 或Flash等脚本,窃取浏览此页面的用户的隐私,改变用户的设置,破坏用户的数据。跨站脚本攻击在多数情况下不会对服务器和WEB程序的运行造成影响,但对客户端的安全构成严重的威胁。
以仿动网的阿菜论坛(beta-1)举个最简单的例子。当我们提交
/acjspbbs/dispuser.jsp?name=someuser; scriptalert(document.cookie)
便能弹出包含自己cookie信息的对话框。而提交
/acjspbbs/dispuser.jsp?name=someuser; scriptdocument.location=
就能重定向到网易。
由于在返回“name”变量的值给客户端时,脚本没有进行任何编码或
您可能关注的文档
最近下载
- 《阁夜》全.ppt VIP
- 《建筑工程识图》课件——柱板平法施工图识读实训.pptx VIP
- 新版部编人教版三年级上册道德与法治全册教案教学设计含教学反思 .pdf
- 实验室危险化学品培训.pptx VIP
- 《指数与指数幂的运算习题.pdf VIP
- 校园新媒体平台管理细则.pdf VIP
- E+H仪表选型手册 10W 50W 53W电磁流量计 TI28206D.pdf
- XX县医院“十五五”发展规划(2026-2030年).docx VIP
- 法理学(西南政大)中国大学MOOC 慕课 章节测验 期末考试答案.docx VIP
- 第8课 用制度体系保证人民当家作主 课件 中职高教版中国特色社会主义.pptx
原创力文档


文档评论(0)