http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx
一切都是临时的,beta2相对于beta1改了很多,不知道正式发布时是否还会改变。
一切都是临时的,beta2相对于beta1改了很多,不知道正式发布时是否还会改变。
翻译的作用是备忘。
Silverlight 2 beta 支持2种访问远程服务器的方式:
System.Net命名空间中的WebClient和HTTP类。这些类使用HTTP或者HTTPS访问。
这两种情况都需要提供安全机制以防止silverlight程序发起未经允许的连接。潜在风险包括:
反向连接攻击:让用户的silverlight访问某个远程节点,从而攻击者可以通过此连接访问用户的私有网络(这个攻击的模式是,用户访问了一个恶意silverlight站点,下载了silverlight并运行,该silverlight建立一个到私有网络的连接,例如内部file server,从而实现偷窃内部file server数据的功能)
Silverlight设计出了防止以上的攻击之外,还立足于提供管理员更好的控制。
原有的设计是仅允许silverlight访问源站点。beta1的这个安全模型仅仅允许silverlight通过socket访问下载的那个站点。这个源站点可以是localhost,如果这个silverlight直接从文件中打开的话。
beta包含了跨域连接的支持从而允许访问非源站点。这个重要特性允许silverlight程序使用已有的web service。Silverlight 2 Runtime在允许一个网络连接之前,需要首先从该网站下载一个安全策略文件。这个安全策略文件仅影响WebClient和HTTP类的跨域网络访问。WebClient和HTTP类在访问源的时候,无须安全策略文件。
对于socket,这个安全策略系统不仅影响跨域访问,也影响源访问。即便是源访问,也需要安全策略。这和beta1不一样。beta1中源访问总是被允许的。
安全策略系统基础
Silverlight 存在2种安全策略文件:
如果连接是WEB跨域,Silverlight2 运行时使用HTTP协议下载安全策略文件。Silverlight2 运行时首先试图从目标域的根下载Silverlight策略文件clientaccesspolicy.xml,如果能获得这个文件(即便解析该文件出现错误),它也用该文件做跨域策略文件。如果找不到该文件,Silverlight运行时试图从目标域的根下载flash策略文件crossdomain.xml。这个flash策略文件必须允许连接所有域。
如果是socket连接(跨域或者源访问),Silverlight2运行时试图连接目标站点的943端口(固定端口)。如果可以建立,Silverlight运行时发送一个特殊的字符串到服务器以获得策略文件。Silverlight2运行时会等待目标站点返回Silverlight策略文件。如果返回了(即便解析出错),也会用作策略文件。
如果策略文件正确解析,并且保证了权限,连接会建立。否则,连接以及以后的连接均被阻止。
如果发现943被bind,kill掉该process,启动自己的server,同时策略文件允许所有。