У меня есть файл PHP: index.php в корне моего веб-каталога (что-то вроде):
<?php
echo '<div>
<img src="https://web-answers.ru/wp-content/uploads/2019/02/test.png">
</div>';
?>
И у меня есть файл .htaccess в каталоге images /, который содержит следующее:
deny from all
Насколько я понимаю, это должно позволить <img src="https://web-answers.ru/wp-content/uploads/2019/02/test.png">
будет отображаться на веб-странице, но не должен позволять пользователю получить доступ к test.png
подайте непосредственно следующим образом: www.example.com/images/test.png
(Я ожидаю, что это вызовет запрещенную ошибку или что-то в этом роде).
К сожалению, вышеизложенное приводит к тому, что изображение не отображается на index.php
а также изображение, не отображаемое по прямой ссылке: www.example.com/images/test.png
, Если я удаляю файл .htaccess, изображение отображается нормально, но к нему можно получить доступ по прямому URL.
Любые идеи, почему это не будет работать, как ожидалось?
В Yo / u отсутствует большое различие между блокировкой доступа к включенному файлу php (который обрабатывается на стороне сервера) и к изображению, на которое ссылается php. Самое простое решение, которое я могу придумать, — это чтобы ваш php-файл открыл изображение и вернул его как изображение.
Что-то вроде:
<?php
//Do whatever checking you want
$im = file_get_contents("images/example.png");
header("Content-type: image/jpeg");
echo $im;
?>
Обратите внимание, что это по-прежнему позволяет кому-то, кто знает имя php-файла, получить изображение и т.д .; все, что это делает, дает вам место для проверки в php-коде (примером проверки будет проверка http_referer, если вы хотите заблокировать людей от «горячих ссылок» на изображения)
Других решений пока нет …