Защита от скачки

Статус
В этой теме нельзя размещать новые ответы.
  • Заблокирован
  • #11
Может ошибаюсь, но пользователю referer просто так не подменить (ибо за него отвечает браузер), для этого надо скриптом со своими заголовками сливать самому (см. пункт первый моего поста выше). Могу, конечно, невзначай ошибиться. Голова сейчас плохо думает :( .


кидаем браузеру рефёра, а потом Location
Должно сработать
да, та самая HTTP/1.1 спецификация
 
кидаем браузеру рефёра, а потом Location
Должно сработать
да, та самая HTTP/1.1 спецификация

Прошу меня извинить, глобальный по поиск RFC мне не дал мне результата. Не могли бы Вы дать прямую ссылку на нужную главу. Завтра почитаю. Просто для меня является нонсесом (с точки зрения логики) подобная подмена referer'а при редиректе со сменой домена.
 
  • Заблокирован
  • #13
Может не доперевели, вот на англ. ишите по "referer"


14.36 Referer

The Referer[sic] request-header field allows the client to specify, for the server's benefit, the address (URI) of the resource from which the Request-URI was obtained (the "referrer", although the header field is misspelled.) The Referer request-header allows a server to generate lists of back-links to resources for interest, logging, optimized caching, etc. It also allows obsolete or mistyped links to be traced for maintenance. The Referer field MUST NOT be sent if the Request-URI was obtained from a source that does not have its own URI, such as input from the user keyboard.

Referer = "Referer" ":" ( absoluteURI | relativeURI )

Example:

Referer: Для просмотра ссылки Войди или Зарегистрируйся

If the field value is a relative URI, it SHOULD be interpreted relative to the Request-URI. The URI MUST NOT include a fragment. See section 15.1.3 for security considerations.
т.е. (точно не помню, попробуйте) делаем так:
PHP:
<?PHP
header("Referer: http://www.getjar.com/software/");
header("Location: http://download12.getjar.com/downloads/web/pub/29993/FaceDisaster.jar"); 
exit; 
?>

Вот, должно работать, но не проверял, так что может и не работать
 
Файл редиректа:

Если ссылку через такой редирект ввести в адресную строку браузера, то закачка начинается.
Если перейти по этой же ссылке с сайта, то закачка не идет.
Видимо header не переопределяется, как можно это исправить?

 
Я бы написал несколько иначе, лишь для красоты (предположим есть на сайте раздел Для просмотра ссылки Войди или Зарегистрируйся где лежит index.php:(
PHP:
<?// index.php

$url = $_SERVER['QUERY_STRING'];

if (!$url)
  $url = 'http://site.ru/';

if (strpos($url, 'http')===false)
  $url = 'http://'.$url;

header('Location: ' . $url, true);
header('Referer: http://getjar.com/', true);
exit;
?>

Для перехода через этот скрипт на сайте внешние ссылки должны формироваться как:
PHP:
$url = 'http://download12.getjar.com/downloads/web/pub/29993/FaceDisaster.jar';
echo '<a href="/redirect/?'.htmlspecialchars($url).'">'.$url.'</a>';
// в этом случае скачка файла должна работать

Если ссылку через такой редирект ввести в адресную строку браузера, то закачка начинается.
Если перейти по этой же ссылке с сайта, то закачка не идет.
Видимо header не переопределяется, как можно это исправить?
Возможно дело во втором параметре функции header (который "true").

Насчет заголовка META-Refresh:
Я уже выше указывал Вам этот метод. Не передавать referef, ИМХО, целесообразнее. Если автора сайта не дураки, то банить скачки без REFERER'а они не будут.
 
  • Заблокирован
  • #16
Я бы написал несколько иначе, лишь для красоты (предположим есть на сайте раздел Для просмотра ссылки Войди или Зарегистрируйся где лежит index.php:(
PHP:
<?// index.php

$url = $_SERVER['QUERY_STRING'];

if (!$url)
  $url = 'http://site.ru/';

if (strpos($url, 'http')===false)
  $url = 'http://'.$url;

header('Location: ' . $url, true);
header('Referer: http://getjar.com/', true);
exit;
?>

Для перехода через этот скрипт на сайте внешние ссылки должны формироваться как:
PHP:
$url = 'http://download12.getjar.com/downloads/web/pub/29993/FaceDisaster.jar';
echo '<a href="/redirect/?'.htmlspecialchars($url).'">'.$url.'</a>';
// в этом случае скачка файла должна работать


Возможно дело во втором параметре функции header (который "true").

Насчет заголовка META-Refresh:
Я уже выше указывал Вам этот метод. Не передавать referef, ИМХО, целесообразнее. Если автора сайта не дураки, то банить скачки без REFERER'а они не будут.

не все браузеры сбрасывают, когда перебрасывал некий траф через редирект джавы без всяких ссылок в стате партнёрки были и с рефёром и довольно таки много около 30%-50%
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху