Ajax访问XmlWebService的安全问题以及解决方案_第1页
Ajax访问XmlWebService的安全问题以及解决方案_第2页
Ajax访问XmlWebService的安全问题以及解决方案_第3页
Ajax访问XmlWebService的安全问题以及解决方案_第4页
Ajax访问XmlWebService的安全问题以及解决方案_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ajax访问xm i web service的安全问题以及解决方案在 ajax中updatepanel比较常用,原本需要刷新的操作套在updatepanel中就成了 ajax操作 了,挺帅!但ajax也是支持与xml web service交互的,这种方法更像是传统 的ajaxpro和其他ajax框架,如jquery,magicajax,extjs的风格,但ms总是 独树-帜,谁讣他的产品设计能力那么高呢!我辈恐怕望尘莫及亚.闲话少叙,下 面简单讲述h ajax如何调用xml web service,熟悉的刖友就略过 吧1. 创建一个支持asp.net ajax的网站或者网络应用程序,我使用的

2、是vs2008,在vs2008中,如果 建立的网站支持.net framework 3.5就有ajax的缺省支持,这陈芝麻,烂谷子的爭情,也不多说。2. 建立好项目之后,在网站根目录中添加一个web服务userservice.asmx,在userservice.asmx中 添加如下方法:webmethodpublic bool useradd(string username, string pwd)lj±jreturn true;l、注意服务类上部要添加attributesystem. web. script. services scriptservice3. 然后把default.

3、aspx屮的scriptmanager修改成如下代码的徳性:<asp:scriptmanager id=nscriptmanager1" runat= "server's< services><asp:servicereference path= "userservice.asmx" /></services></asp:scriptma nager>卜怖我们就在页面中创建用ajax消费这个userservice的代码:主要包括如下:v h2> ajax 调用 xml web servi

4、ce 示例 1 </h2><div style= "border: 1 px solid black; width: 50%; padding: 10px;<table class= "stylel "><tr>< td>用户名:</td>< td>vinput id="txtname" type= "text'1 /></td></tr>< tr><td>密码:</td><td

5、>vinput id二”txtpwd” type= "password" /></td></tr><tr><td>&nbsp;</td><td>< input id= "button2" type= "button" value="提交” onclick= "useradd()" /></td></tr></table></div>在vhead>&l

6、t;/head>添加如f脚本function useradd()ivar name = $get("txtnamen)value;ivar pwd = $get("txtpwdh).value;ajaxws.userservice. user add (n ame,pwd,useraddcallback);i片function useraddcallback(res)ldl±lalert(res);单,运行页面,点击提交按钮,效果如下:windows internet explor叵竺5)true表示成功。一般人这一步都会成功的。二般的除外亚)一些正常,那是

7、不是到这里就万事大吉,ajax jj岁! web service真好!下而是略加思考z后的问题问题一:上面的xml web service没有任何保护,如果useradd是一个数据库插入操作,那这个操作往往系统 只被经过授权的人才能调川成功。以前看有朋友讨论ajax如何调川带有soapheader的xml web ser vice,细细想想,其实没什么必耍! js是客户端的东西,是放出去收不回来的玩意,天知道用户是哪路货 色,如果将身份信息试图通过js传递给soapheader,那密码被截获的可能性就比较大。正确的做法其 实是 session .我们知道 web service 方法中添加一个

8、wcbmethod(enablesession=true)就能使用 ses sion 了,session这家伙专门用丁-保持会话,有这样一个认识之后,新增一个网络服务方法,这个方法实 现功能和起初的user add 一致,只是添加上访问限制wcbmethod(enablesession=truc)public bool uscraddsccurity(string uscrname, string pwd)曰田if (session"user 1dz/ = null)艸return false;hireturn true;在页面中将 ajaxws. userservice. user

9、add (name, pwd, useraddcallback);更改为 ajaxws. userservice. use raddsecuri ty (name, pwd, useraddcaliback);点击提交按钮,会发现弹出结果为 false!在页面中添加一个按钮,点击这个按钮模拟登陆,点击代码为:protected void button3_click(object sender, eventargs e)ldl±li sessionuserld = "jillzhang"l点击登陆按钮后,再次点击提交,便可以返回true。这样便限制了用户对xml w

10、eb service的访问。达 到了解决问题一的目的。问题二:这个问题涉及到xml web service架构的缺陷,这个缺陷在wcf中已经有所更正和弥补。我们知道web se rvice是一刊|强度公开和共享的技术,z所以称z为服务,必然是提供给其他应用程序所使用。但事实上,有很多服务是服务于局部或者特殊个体的,而不是理想中的人众。而在原來老的xml web service中,wsdl的发布与网络服务的发布是绑在一起的,我将.asmx部署到iis中,那在这个.asmx后加上?vsdl就能访 问服务的wsdlo wsdl是对服务的描述,知道它,便能开发客户代理,从而消费服务,但这样有问题:我的

11、 服务只想让局部或者特姝的儿个人知道,其他人根本不想让其访问到。这就麻烦了。我发布.asmx, wsdl 就发布。而wsdl的发现依靠的是uddt,通过下而的一段描述:uddi如何被使用假如行业发布了一个用于航班比率检测和预订的uddi标准,航空公罚就可以把 它们的服务注册到一个uddi目录中。然后旅行社就能够搜索这个uddi目录以 找到航空公司预订界面。当此界面被找到后,旅行社就能够立即与此服务进行通 信,这样由于它使用了一套定义良好的预订界而。如果遍历uddt ei录,不难发现wsdl,发现wsdi,后便可以开发客户端与服务交互。这可不是好事怖,在问 题一中,用授权的方法可以解决种问题,但假如我的服务是这样的,它返i川服务器当前时间,这个方法 对于我网站的用户而言是公开的,如果生硬的加上session,冇些麻烦。但这个服务我只希望我h己的aj ax能访问,不希望别人发现并调用,但原來的xml web service架构的确不能满足这个需求。如果被一个 攻击者发现,他可能会根据公开的wsdl开发客户端,然后不停的dd0s攻击,灾难!上面这个问题对于原来的web service,我还是没有好的解决方案,当然不代表没有解决方案。有刖友知 道,劳烦指教。但对于wcf架构,就充分考虑到上面这个问题了。看看下血老的xml web service架构与wcf架构z间的 对比:1)老架构m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论