使clientaccesspolicy代理解决方法有什么安全隐患?

时间:2010-03-20 19:33:41

标签: silverlight security clientaccesspolicy.xml

我想使用公布GoogleDocs文件叽叽喳喳的鸣叫为Silverlight应用程序的数据源,但跑进 clientaccesspolicy 的问题。

我读了许多文章thisthis它是多么的困难得到解决的 clientaccesspolicy 的问题。

所以我写了这个卷曲脚本并把它放在我的PHP的网站,现在我可以得到任何GoogleDocs文件和Twitter的饲料的文本到我的 Silverlight的应用程序:< / p>

<?php
$url = filter_input(INPUT_GET, 'url',FILTER_SANITIZE_STRING);

$validUrls[] = "http://docs.google.com";
$validUrls[] = "http://twitter.com/statuses/user_timeline"; 

if(beginsWithOneOfThese($url, $validUrls)) {
  $user_agent = 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)';
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie");
  curl_setopt($ch, CURLOPT_COOKIEFILE, "/tmp/cookie");
  curl_setopt($ch, CURLOPT_URL, $url ); 
  curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
  curl_setopt($ch, CURLOPT_TIMEOUT, 15);
  curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  curl_setopt($ch, CURLOPT_VERBOSE, 0);
  echo curl_exec($ch);
} else
  echo "invalid url";

function beginsWithOneOfThese($main, $prefixes) {
  foreach($prefixes as $prefix) {
    if(beginsWith($main, $prefix))
      return true;
  }
  return false;
}

function beginsWith($main, $prefix) {
    return strpos($main, $prefix) === 0;
}

?>

所以这让我想知道:

  • 为什么会出现这么多讨论关于网址是否不支持clientaccesspolicy或没有,因为你只需要编写一个简单的代理脚本,并通过它获取信息?
  • 为什么没有服务,例如比如URL缩短服务,提供这个功能?
  • 拥有这样的脚本有什么安全隐患

1 个答案:

答案 0 :(得分:2)

虽然您可能认为代理为您提供与客户端发出请求相同的功能,但事实并非如此。更具体地说,您不会拥有目标站点的客户端cookie /凭证,在某些情况下,客户端可以访问目标站点,但您的代理不能(例如Intranet)。

http://blogs.msdn.com/ieinternals/archive/2009/08/28/Explaining-Same-Origin-Policy-Part-1-Deny-Read.aspx在一定程度上解释了同源政策。

就您的代理的安全隐患而言 - 这取决于您是否具有访问控制权。如果没有,坏人可以使用你的代理隐藏他的踪迹,因为他攻击网站或下载非法内容。