2013-11-28 2 views
4

Мы все знаем, что это очень важная проблема для многих веб-разработчиков. Они хотят защитить прямой доступ или прямую читаемость к своим конфиденциальным изображениям. Папка, содержащая все изображения, открыта, и каждый может посетить эту папку, но я хочу сделать что-то, что может защитить содержимое моего изображения, а значит, если неавторизованный парень ищет изображение, он может получить изображение, посетив соответствующую папку, но содержимое будет невидимым или трудно понять. Я думаю, что если я получу решение, многим парням поможет этот вопрос. Письмо .htaccess не всегда является стабильным выбором. Итак, после мозгового штурма я нашел несколько способов, как я могу защитить содержимое изображения от прямого доступа. Я хочу использовать Imagick с PHP для выполнения любого вида редактирования изображений.Защита содержимого изображения от несанкционированных пользователей

  1. Добавление и удаление слоя: После загрузки, добавьте слой, чтобы сделать содержимое изображения невидимым. Таким образом, если кто-либо достигнет папки, которую вы сохранили, изображения будут бессмысленными, поскольку он увидит слой, а не содержимое изображения. Затем удалите слой и покажите им, у кого есть соответствующие права.

  2. Преобразование изображения в другой формат: Преобразовать изображение в любом формате, как .txt, .exe, .bin, .avi или любой другой формат, так что без редактирования, то изображение не будет видно. Преобразуйте назад, чтобы показать его авторизованному пользователю.

  3. Сетка изображения: Разделите изображение на некоторые сетки, скажем, если изображение представляет собой среднюю сетку 100 и измените положение сетки, чтобы содержимое стало неясным. Чтобы сделать это, мы можем назвать каждую сетку как 1, 2, 3 и так далее, а затем изменить позицию на $position - 20. Итак, сетка позиции 25 будет идти до 5, 100 пойдет до 80, 1 пойдет до 81 и так далее. Обратно так же, как показано авторизованным пользователям.

Невозможно полностью защитить, но мы можем сделать это сложнее. Я не знаю, какая из трех возможна с Imagick, а какая нет. Скажите, пожалуйста, знаете ли вы. Заранее спасибо.

+2

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

+1

Вы пишете изображение, загружающее веб-приложение, которое позволяет пользователям загружать изображения? Или вы просто хотите защитить от hotlinking и кражи изображений, щелкнув правой кнопкой мыши? Сетка изображения звучит неплохо, но вместо этого я бы использовал шифрование. Или вы можете сохранить свой образ в блоге MySQL. –

+0

jeff, отличная идея. SHINKiROU, я не защищаю сохранение образа, а не затрудняет понимание содержимого. Да, пользователи и администратор загружают изображения. Не могли бы вы арендовать объяснение или ссылку на статью о шифровании? –

ответ

2

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

, например, папка общего HTML является: /var/www your image folder can be: /registered_user/images/

Затем в PHP скрипт вы можете написать:

<?php 
if(!userLogged() || !isset($_GET['image'])) { 
    header('Location: /'); 
    die(); 
} 
$path = '/registered_user/images/'; 
$file = clean($_GET['image']); // you can create a clean function that only get valid character for files 

$filename = $path . $file; 
if(!file_exists($filename)) { 
    $filename = '/var/www/images/bogus.jpg'; 
} 
$imageInfo = getimagesize($filename); 

header ('Content-length: ' . filesize($filename)); 
header ('Content-type: ' . $imageInfo['mime']); 
readfile ($filename); 
Смежные вопросы