Как остановить доступ к PHP-файлу с других сайтов


Я где-то читал о горячем связывании изображений. Предотвращение горячих ссылок на изображения помогает предотвратить кражу пропускной способности с вашего сайта. Будет ли это работать для PHP-файла?

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

Author: Stephen Ostermiller, 2010-10-28

2 answers

Один из программных способов - проверить реферера, чтобы убедиться, что запрос поступил с вашего сайта:

<?php
    $yoursite = "yoursite.com"; //Your site url without http://
    $yoursite2 = "www.yoursite.com"; //Type your domain with www. this time

    $referer = $_SERVER['HTTP_REFERER'];

    //Check if browser sends referrer url or not
    if ($referer == "") { //If not, set referrer as your domain
        $domain = $yoursite;
    } else {
        $domain = parse_url($referer); //If yes, parse referrer
    }

    if($domain['host'] == $yoursite || $domain['host'] == $yoursite2) {

        //Run your image generation code

    } else {

        //The referrer is not your site, we redirect to your home page
        header("Location: http://yoursite.com");
        exit(); //Stop running the script

    }    
?> 

Редактировать
В этой статье представлен альтернативный метод с использованием сеансов PHP.

 5
Author: BenV, 2020-07-30 11:35:04

Этот пример для изображения, даже вы можете сделать то же самое для любого типа файла Вы можете сделать эту папку недоступной из Интернета (например, поместить папку за пределы htdocs или добавить правила .htaccess).

Создайте PHP-скрипт, который обрабатывает все запросы к частным изображениям. Этот скрипт должен был бы выполнить следующее:

- проверьте, аутентифицирован ли пользователь
- проверьте, авторизован ли пользователь для просмотра запрошенного изображения, откройте изображение и распечатайте его в браузере
(вам нужно установите правильные заголовки http, чтобы убедиться, что содержимое обрабатывается как изображение)

Демонстрация

Getimage.php

  if (LoggedInUserCanAccessThisFile())//this is optional user define function as requirement if you want that only login user can see image then with the help of your session variables or cookies you can return this function true or false 
    {
    $file = 'privatedir/image.jpg';
    $type = 'image/jpeg';
    header('Content-Type:'.$type);
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit();
    }

Home.php/otherpage.php

<img src="getimage.php" />

(вы можете использовать src="getimage.php?идентификатор пользователя=123" и войти в getimage.php и проверьте, вошел ли этот пользователь в систему или нет для отображения изображения)

(также вы можете использовать src="getimage.php?userid=123&imgfilename=image3.jpg "для кода динамических изображений и входа в getimage.php как

$file = 'privatedir/'.$_GET["imgfilename"];

)

 0
Author: Hassan Saeed, 2018-01-08 17:27:52