Веб-сайт A действительно может быть фальшивым, будучи B. HTTP Referer (sic) тривиален для фальсификации.
То, что вы хотите, это что-то вроде этого ...
.htaccess
RewriteEngine on
# Send all png, gif, jpeg, jpeg to image.php
RewriteRule ^images/(.*)\.(png|gif|jpe?g)$ image.php?img=$1
PHP
<?php
if ( ! isset($_GET['img'])) {
exit;
}
$img = $_GET['img'];
// Easily spoofed
if (isset($_SERVER['HTTP_REFERER'])
AND $_SERVER['HTTP_REFERER'] === 'http://example.com') {
// This image appears to be requested by example.com
}
// Avoid directory traversal attacks and validate image extension
if ( ! preg_match('/^[a-zA-Z0-9-_]+\.(gif|png|jpe?g)$/', $img)) {
exit;
}
// Get image type
list(,,$type) = getimagesize($img);
// Send headers and echo file contents
header('Content-Type: ' . image_type_to_mime_type($type));
readfile($img);
Если вы не хотите сопоставлять такую конкретную строку реферера, вы можете использовать parse_url()
, чтобы получить домен, а затем сравнить его (или как вы хотите сравнить).