За последние 24 часа нас посетили 16738 программистов и 1694 робота. Сейчас ищут 886 программистов ...

Защита изображений от прямых ссылок

Тема в разделе "PHP для новичков", создана пользователем Ser2011, 31 июл 2011.

  1. Ser2011

    Ser2011 Активный пользователь

    С нами с:
    28 июн 2011
    Сообщения:
    10
    Симпатии:
    0
    как защитить файлы от вот таких ссылок http://мойсайт.ру/images/file1.jpeg?
    Или как перенаправлять все запросы директории images в скрипт http://мойсайт.ру/index.php?
    Чтобы изображения просматривались тока через index.php.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ser2011
    реферера проверить. но это не гарантирует ничего. но в 99% случаев тебе хватит.
     
  3. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Можно картинки хранить выше каталога public_html и отдавать только php-скриптом, проверив всё, что тебе нужно. Отдать картинку скриптом просто:

    PHP:
    1. <?php
    2. // всякие проверки...
    3. header('Content-type: image/jpeg');
    4. if($ok)
    5.    readfile($imgsPath . DIRECTORY_SEPARATOR . $imgName);
    6. else
    7.    readfile($imgsPath . DIRECTORY_SEPARATOR . 'no_image.jpg');
    8. ?>
     
  4. Ser2011

    Ser2011 Активный пользователь

    С нами с:
    28 июн 2011
    Сообщения:
    10
    Симпатии:
    0
    спасибо за варианты,
    хочу использовать модуль apache mod_rewrite

    может кто даст уже готовые правила?
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ser2011
    ну, используя $_SERVER['REQUEST_URI'] можно обойтись одним правилов навсегда
     
  6. Ser2011

    Ser2011 Активный пользователь

    С нами с:
    28 июн 2011
    Сообщения:
    10
    Симпатии:
    0
    вопрос: а как клиент может обмануть перенаправление?
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    нафиг не нужно прокачивать картинку сквозь php.
    гугляй "mod_rewrite stop image leach"

    вот например:
    http://mikeperry.org/tech_tips/disabling_facebook.html

    надо в списке правильных рефереров указать всех откуда можно + пустой, это важно
    пусть пара плохих клиентов случайно прошмыгнут, в целом это наилучший вариант
     
  8. Ser2011

    Ser2011 Активный пользователь

    С нами с:
    28 июн 2011
    Сообщения:
    10
    Симпатии:
    0
    короче как я понял только через index.php не получится, можно тока немножко припрятать под дикими названиями папок
     
  9. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    на самом деле получится. например так:

    .htaccess
    и соответственно отдавать все файлы, получая название в $_GET['file'].
    ещё не забыть фильтровать отдачу вышестоящих файлов, собственно index.php и .htaccess
     
  10. Ser2011

    Ser2011 Активный пользователь

    С нами с:
    28 июн 2011
    Сообщения:
    10
    Симпатии:
    0
    вопрос: а вот если в этом index.php есть тэг <img> ссылкой на рисунок, то картинка откроется?
     
  11. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    не откроется по той простой причине, что хтмл и бинарные данные отдаются по отдельности
    img - это хтмл тег, который указывает путь к изображению, и именно по этому пути отдаётся изображение в бинарном виде.

    советую почитать про основы хтмл и протокола хттп
     
  12. Ser2011

    Ser2011 Активный пользователь

    С нами с:
    28 июн 2011
    Сообщения:
    10
    Симпатии:
    0
    понятно, спасибо за быстрые ответы.