Каковы последствия безопасности для обхода клиентской политики через прокси-сервер? - PullRequest
1 голос
/ 20 марта 2010

Я хотел использовать опубликованные документы GoogleDocs и твиты Twitter в качестве источника данных приложения Silverlight, но столкнулся с clientaccesspolicy выпусками.

Я прочитал много статей , таких как , и , , о том, как трудно обойти проблему clientaccesspolicy .

Итак, я написал этот CURL-скрипт и разместил его на своем PHP-сайте, и теперь я могу получить текст любого документа GoogleDocs и ленты Twitter в моем приложении Silverlight :

<?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;
}

?>

Так что меня удивляет:

  • Почему так много дискуссий о том, поддерживают или нет URL-адреса клиентскую политику или нет, поскольку вам просто нужно написать простой прокси-скрипт и получить информацию через него?
  • Почему нет услуг , например как сервисы сокращения URL, которые предоставляют эту функциональность?
  • Каковы последствия для безопасности наличия такого сценария?

1 Ответ

2 голосов
/ 20 марта 2010

Хотя вы можете подумать, что прокси-сервер предоставляет вам те же возможности, что и клиент, который делает запрос, это не так. В частности, у вас не будет файлов cookie / учетных данных клиента для целевого сайта, и в некоторых случаях клиент может достичь целевого сайта, но ваш прокси-сервер не может (например, Интранет).

http://blogs.msdn.com/ieinternals/archive/2009/08/28/Explaining-Same-Origin-Policy-Part-1-Deny-Read.aspx объясняет ту же Политику происхождения довольно подробно.

С точки зрения последствий для безопасности вашего прокси-сервера - ну, это зависит от того, есть ли у вас контроль доступа к этому. В противном случае плохой парень может использовать ваш прокси, чтобы скрыть свои треки, когда он взламывает сайты или загружает нелегальный контент.

...