Блокировка контента с помощью .htaccess препятствует его загрузке даже в разрешенных доменах - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь заблокировать загрузку контента, если к нему обращаются напрямую или из недопустимого домена. Для этого я использую .htaccess. Итак, моя логика:

  • Доступ напрямую : пустой реферер.
  • Недопустимый домен : домен реферера отличается от разрешенного домена.

Мне также нужно заблокировать другие типы файлов. jpg|jpeg|gif|png|bmp|zip|ppt|pptx|ai|pdf|doc|xls|xlsx|psd|mov|svg

Чтобы получить больше контекста, контент (и следующие .htaccess) размещаются в другом домене, из которого я хочу иметь возможность загружать контент. Допустим, содержимое находится в x.com, и я хочу иметь возможность загружать содержимое только в example.com

Итак, это мой .htaccess

SetEnvIf Referer "^https://www.example.com/" letitpass
Order Deny,Allow
Deny from all
Allow from env=letitpass

ErrorDocument 403 /403.html

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?example.com/.*$ [NC]
  RewriteRule \.(jpg|jpeg|gif|png|bmp|zip|ppt|pptx|ai|pdf|doc|xls|xlsx|psd|mov|svg)$ - [F,NC,L]
</ifModule>

Это работает частично, как и ожидалось. Проблема в том, что некоторое содержимое (например, изображение) внутри документа PHP или HTML не загружается даже в разрешенном домене.

Это результат: (скриншот из example.com/a-page/)

  1. Изображение <img src="https://x.com/image.png">. Работает как положено. Загружается только в example.com

enter image description here

  1. iframe с документом .pdf, <iframe src="https://x.com/file.pdf">. Работает как положено. Загружается только в example.com

enter image description here

  1. iframe с документом .php. Документ имеет img (x.com/image.png) и файл PDF (x.com/file.pdf). <iframe src="https://x.com/document.php">. Это не не работает, как ожидалось. Страница загружается только в разрешенном домене, и это нормально, но некоторое содержимое, например изображение, не загружается

enter image description here

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 19 сентября 2018

добавить логическое OR в исключение RewriteCond ..., чтобы разрешить встраивание для x.com:

RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?(example|x).com/.*$ [NC]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...