Права доступа к папке 777 - как сделать безопаснее ?

12
SN
На сайте с 04.07.2013
Offline
84
1375

Есть движок на PHP.

Его особенность - он умеет генерировать статические файлы (.html, .xml) на основании введеных пользователем данных.

ТО ЕСТЬ - на сайте есть форма, которую заполняет пользователь. Когда он нажимает кнопку отправить, на сервере в папке появляется новый статический файл .html.

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

ВОПРОС:

насколько это безопасно?

как настроить сервер, чтобы описанная фукциональность сохранялась, но и было безопасно для сайта?

такое вообще практикуется? встречали?

Jurgen s
На сайте с 21.05.2008
Offline
153
#1
насколько это безопасно?
как настроить сервер, чтобы описанная фукциональность сохранялась, но и было безопасно для сайта?
такое вообще практикуется? встречали?

закройте доступ ко всем файлам кроме файлов с указанным расширением

да такое практикуется, встречали

Закрыть доступ можно при помощи файла .htaccess помещенного в эту папку

http://police-ua.com/ (http://police-ua.com/) Форум сотрудников МВД Украины
WebAlt
На сайте с 02.12.2007
Offline
262
#2

Закинь в эту папку .htaccess с содержимым:

<FilesMatch "\.([Pp][Hh][Pp]|[Cc][Gg][Ii]|[Pp][Ll]|[Pp][Hh][Tt][Mm][Ll])\.?">

Order allow,deny
Deny from all
</FilesMatch>

Запрещает прямое обращение к PHP файлам, находящимся в этих папках, становятся бесполезными для зловреда.

SocFishing
На сайте с 26.09.2013
Offline
118
#3

А зачем закрывать? в вашем случае просто введенные пользователем данные вырезайте из них теги. В PHP функция strip_tags('test <script>alert();</script>');

Этого достаточно я думаю. Так как html и xml не исполняемые файлы и вряд ли как-то повредят вашему сайту.

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
Polkan
На сайте с 28.09.2005
Offline
102
#4
SeoNk:
...на сайте есть форма, которую заполняет пользователь. Когда он нажимает кнопку отправить, на сервере в папке появляется новый статический файл...

Файл там появляется потому, что создает его вебсервер, а не пользователь.

Поэтому это:

SeoNk:
Для того чтобы это стало возможным мне пришлось выставить максимальные права для этой папки (куда записываются файлы) - 777, т.е. все пользователь могут читать, записывать и выполнять все файлы.

совершенно неверно.

Права на запись достаточно иметь вебсерверу.

Всем остальным - права на чтение файлов и просмотр папки.

SeoNk:
насколько это безопасно?
как настроить сервер, чтобы описанная фукциональность сохранялась

Права 777 врядли можно назвать безопасными при любом раскладе.

- Поставьте 755,

- Убедитесь, что владелец папки - вебсервер (или пользователь под которым он у вас работает)

- Фильтруйте пользовательский ввод (писали выше)

- Ограничте доступ к файлам (писали выше)

WordPress-плагин для Apishops (http://p-api-shop.ru/) P-API-Shop WooCommerce-плагин для Apishops (http://woo-apishops.ru/) Woo-Apishops
K
На сайте с 03.06.2015
Offline
45
#5

Что с этими файлами дальше происходит? Их любой может открыть по предоставленной ссылке или только автор, или никто?

SeoNk:
максимальные права для этой папки

Чтобы из нее никто не мог открыть файл из папки в публичном месте, в .htaccess надо написать Deny from all

Или сделайте так, чтобы эта папка не входила в папку сайта.

MYSQL PHP JS HTML CSS SEO TXT США СССР
SN
На сайте с 04.07.2013
Offline
84
#6

Друзья, у меня nginx.

Файлы которые генерируются должны быть доступны остальным пользователям по ссылке, т.е. закрыть права для всех я не могу.

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

Вынести сохраняемые файлы в отдельную папку и открыть права только на нее мне кажется хорошей идеей, но мне бы хотелось чтобы все сохраняемые файлы были доступны по адресу site.ru/page.html, а если они будут помещенны в отдельную папку, то адрес соответственно станет таким site.ru/folder/page.html т.е. в адресе появляется дополнительное звено, что не очень хорошо для восприятия и СЕО.

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

Ragnarok
На сайте с 25.06.2010
Offline
239
#7

SeoNk, через .htaccess можно запретить выполнение любого php кода в этой папке

//TODO: перестать откладывать на потом
K
На сайте с 03.06.2015
Offline
45
#8

Это у вас паранойя. Если движок писал не идиот, ничего вредного записать в файл нельзя. Проверьте коды методов или попросите проверить тех кто понимает. Например сюда процитируйте важны кусок.

WebAlt
На сайте с 02.12.2007
Offline
262
#9
SeoNk:
Друзья, у меня nginx.

# nginx configuration

location ~* ^/your_folder/.*.(htm|shtml|php)$ {
types { }
default_type text/plain;
}
SeVlad
На сайте с 03.11.2008
Offline
1609
#10
Polkan:
Права на запись достаточно иметь вебсерверу.
Всем остальным - права на чтение файлов и просмотр папки.

[дабы не оверквотить - весь пост имею ввиду, а не только эту цитату]

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

Скрипты, выполняемые в файлах - будут же выполняться от вебсеревера, а не от юзера. Отсюда - пофик какие там права у юзера на эти файлы.

Наиболее надёжная защита от выполнения скриптов в этих файлах - как сказал WebAlt - запрет выполнения пхп кода в них. Только ИМХО черезчур заумная директива. ИМХО достаточно просто не разрешать исполнение пхп в html, что дефолтно так и есть.

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

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий