2013-04-29 4 views
0

У меня есть структура каталогов изображений в моем public_html, как это:Обеспечение безопасности файлов в папку на public_html

public_html/ 
    design_images/ 
     product_11/ 
      112342_234/ ... a bunch of images stored here for this product 
      112343_910/ ... images for this product 
      more image folders/... 
      ... 

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

Как я могу защитить от этого? Я использую Apache на виртуальном сервере, и у меня есть доступ к root в моем пакете хостинга.

У меня также есть файлы javascript в public_html/js, возможно ли, чтобы какой-нибудь негодяй пришел и каким-то образом их отредактировал?

+1

Связанный: http://security.stackexchange.com/questions/77/apache-server-hardening – 1615903

ответ

1

Перемещение из личной папки HTML и сделать такой скрипт (в псевдо):

loadimage.php

<? 
$imageName = $_GET['image'] 
$file = (abstract folder name and file name from $imagename) 
$file = (sanatize all variables before passing it to the filesystem) 

$sizeAndType = getimagesize($file); 
header('Content-Type:'.$sizeAndType['mime']); 
header('Content-Length: ' . filesize($file)); 
readfile($file); 

и коллировать с www.example.com/loadimage.php?image=product_1234_something .jpg (или же вы решили построить имя.

, то было бы еще лучше, чтобы написать HTAccess с mod_rewrite, чтобы дезинфицировать URL, так что вы можете просто использовать старые, или даже лучше URL-адрес накопления.

Однако это не защитит вас от всего. вам все равно нужно убедиться, что на остальной части сервера нет серьезных дыр, таких как 777 общих папок и тому подобное.

+0

У меня есть общая папка 777. Есть ли способ разрешить доступ только к моим собственным php-файлам для этих папок, не позволяя никому другому обращаться к ним? – user961627

+0

Не позволяйте только вашим файлам обращаться к нему. но реальная опасность заключается в том, что apache может помещать в него файлы. поэтому люди могут просто помещать файлы туда и выполнять. поэтому, если у вас есть какие-либо общедоступные 777 папок, по крайней мере, экранируйте их .htaccess – nvanesch

+0

Я просто понял, что у меня нет общедоступных 777 папок, их 755. И файлы в этих папках 644. Это хорошо? – user961627