Как я могу защитить свой сайт от пиявки? - PullRequest
0 голосов
/ 08 января 2010

Я использую функцию header PHP отправить файл в браузер с небольшим кодом. Его работа хорошо и у меня так, что если кто-то запрашивает это с реферером, кроме моего сайта он перенаправляет на страницу первым. К сожалению, он не работает с интернет-менеджером загрузки.

Что я хочу знать, так это то, как сайты rabidshare и 4shared делают это.

Ответы [ 4 ]

2 голосов
/ 08 января 2010

Не все браузеры / программы, которые могут видеть веб-страницы, будут отправлять Referer на ваш сервер. Некоторые сайты создают в браузере «отпечаток», обычно хэшируемый, например, Referer, User-Agent и несколько других заголовков, соединенных вместе, чтобы создать уникальный идентификатор для этого пользователя и, таким образом, ограничить доступ, как вы описываете.

Конечно, я, возможно, полностью упустил смысл вашего поста!

2 голосов
/ 08 января 2010

Типичный шаблон проектирования использует фронт-контроллер, чтобы иметь единую точку входа для всех запросов. Имея фронт-контроллер, вы можете точно контролировать то, что видит клиент.

Вы можете настроить это в Apache так, чтобы все запросы проходили через один файл (это было давно, так как я сделал это, потому что теперь я концентрируюсь на Java). Я думаю, что вам нужно было бы посмотреть документацию pathinfo для Apache.

Это может потребовать значительных изменений в остальной части кода вашего приложения. Но код будет более безопасным и обслуживаемым в долгосрочной перспективе.

По этому шаблону я обслуживал изображения и другие двоичные файлы. Это позволило мне легко проверить подлинность пользователей перед тем, как отправлять им файл. Запутывание не является безопасностью, поэтому, если вы полагаетесь на запутывание своего URL, злоумышленник может задержаться, но это всего лишь вопрос времени.

Walter

2 голосов
/ 08 января 2010

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

1 голос
/ 09 января 2010

Возможно, проблема в том, что отправка файла через php-скрипт (с указанными вами заголовками) не поддерживает загрузку файла с определенной позиции. Менеджеры загрузки используют эту функцию для загрузки файла, используя несколько потоков одновременно (при условии, что сервер выдает один поток с определенной скоростью).

Для небольшого проекта я бы порекомендовал сделать копию файла с уникальным именем файла только для времени загрузки и перенаправить пользователя на этот скопированный файл. Таким образом, он получает все возможности загрузки с сервера, а также не загружает процессор, как это делает php. Недостатки - требуется больше места на диске и требуется очистить каталог загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...