谈谈Silverlight的一个跨域安全考虑
2008-11-24 11:53:04 来源:WEB开发网我对第二段做了个简单的翻译:
所有的sl请求都会将Cookie和身份验证信息连同发送。这就意味着如果你有一个Web服务,允许用户访问隐私信息,那么你应该将这个web服务放置在其他的域下,和暴露给第三方调用者的web服务的域名区分开。例如,如果你有一个网店放置在http://www.tailspintoys.com,你的网店允许客户存储交易的信息,其中包含了信用卡号码。那么你不应该将一个返回产品清单的web服务放在同个主机域下,然后暴露给第三方的SL客户端。因为Cookie和身份验证信息会和请求连同发送,如果你将这些web服务放置在同个域下的话,你就给了第三方的调用者一个很方便的途径来访问你的客户的私人交易信息。在这个例子中,你暴露给第三方的web服务应该放置在http://services.tailspintoys.com。因为这是一个不同的主机域。你必须非常小心的选择哪些服务可以公开,哪些服务应该部署在那个域下。
我们知道Cookie中有一个主机名的属性,对于只有对于同个主机域的请求,浏览器才会把Cookie连带发送。SL也不例外。
假设这么一种场景:淘宝开放了一个Web服务,这个服务干什么我们并不关心。但是我们知道,如果你想要你的Web服务被其他第三方的客户端调用,你必须在网站下放置一个特定的xml文件,我们称为"安全策略配置"文件,Flash对应的是crossdomain.xml文件,Silverlight除了支持Flash的这个策略文件之外自己也有一套策略配置,放在clientaccesspolicy.xml文件中。与Flash不同的是,SL只会从网站的根目录下去寻找这个策略文件,也就是说即使你的web服务是放在/serivce/目录下的,那么SL客户端也会查找"主机名/clientaccesspolicy.xml"这个文件是否存在(我不清楚为什么要这样设计)。因此淘宝为了让他的Web服务被Silverlight支持,就必须在网站根目录下放置一个策略文件。
Tags:谈谈 Silverlight 一个
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接