Как установить правильные права доступа к файлам PHP

Безопасность PHP имеет первостепенное значение, так как это наиболее широко используемый язык для написания сценариев на стороне сервера. Файлы PHP содержат код HTML, CSS и PHP, который создает ваше программное обеспечение или веб-сайт. Вы можете делать все, от сбора данных до создания динамического содержимого страницы с помощью PHP.

Одна из самых простых мер безопасности, но та, которая имеет большое значение, — это установка разрешений для файлов PHP. Игнорирование прав доступа к файлам PHP может привести к серьезным уязвимостям, которые могут привести к взлому или утечке данных! Читайте дальше, чтобы узнать, что это такое и как вы можете их установить.

Что такое права доступа к файлам PHP?

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

Разрешения следуют восьмеричной нумерации. Это означает, что цифры в правах доступа к файлу PHP могут принимать значения от 0 до 7, где каждая цифра имеет значение или значение. Вот таблица значений разрешений:

Значение Двоичный Разрешение
0 000 Нет разрешений на чтение, запись или выполнение
1 001 Только разрешение на выполнение.
2 010 Разрешение только на запись.
3 011 Разрешения только на запись и выполнение.
4 100 Разрешение только на чтение.
5 101 Разрешения только на чтение и выполнение.
6 110 Разрешения только на чтение и запись.
7 111 Разрешения на чтение, запись и выполнение.

Как видите, крайний левый двоичный бит означает «чтение», средний бит — «запись», а крайний правый бит — «выполнение».

Эти разрешения предоставляются владельцу, группам и всем остальным слева направо. Вот некоторые общие разрешения для настройки и их значение:

Разрешение Описание
600 Разрешения на чтение и запись для владельца, без разрешений для остальных.
644 Права на чтение и запись для владельца, права на чтение для остальных.
740 Разрешения на чтение, запись и выполнение для владельца, разрешения на чтение для группы владельца и ничего для остальных.
755 Разрешения на чтение, запись и выполнение для владельца, разрешения на чтение и выполнение для остальных.

Как настроить права доступа к файлам PHP ?

При разработке программного обеспечения или веб-сайта права доступа к файлам обычно остаются неизменными по сравнению с настройками по умолчанию.

Функция fopen() не только открывает существующий файл, но также может создать для вас новый файл с определенными разрешениями, которые устанавливаются по умолчанию, если не указаны. PHP также предлагает некоторые другие функции, такие как проверка и изменение прав доступа к файлам.

Вот несколько простых шагов, которые могут сэкономить ваше время, деньги и ресурсы, блокируя любых злоумышленников, которые могут воспользоваться вашими неизмененными разрешениями на доступ к файлам:

1. Спланируйте, какие разрешения вы хотите назначить пользователям файлов.

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

2. Обновите пользователей и разрешения.

После того, как вы запланировали, какие разрешения предоставить своим пользователям, теперь вы можете работать над настройкой своих разрешений. Ваш клиент FTP/SFTP может помочь вам в обновлении прав доступа к файлам. Чтобы изменить права доступа к файлу через командную строку, выполните следующую команду:

найти /путь/к/вашему/wordpress/install/ -type f -exec chmod 640 {} \;

Обычно идеальное разрешение для файлов — 644, а для каталогов — 755.

3. Время от времени контролируйте новые файлы.

Установка прав доступа к файлам PHP — это непрерывный процесс. Для каждого нового файла — особенно важных файлов ядра или плагинов — вам необходимо установить права доступа к файлам. Это гарантирует отсутствие слабых звеньев, на которые могут нацелиться злоумышленники.

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

4. Регулярно обновляйте.

Обязательно используйте последнюю версию PHP, чтобы исключить уязвимые версии из вашей системы, поскольку они подвержены различным формам атак. Это всегда хорошая практика безопасности, которой нужно следовать.

Разрешения для файла PHP:

Заключение

Соблюдение лучших практик безопасности — хорошее начало для обеспечения безопасности вашего веб-сайта. Такая тривиальная вещь, как права доступа к файлам PHP, может обеспечить хорошую работу вашего сайта. Убедитесь, что они обновлены, чтобы предотвратить потенциальные угрозы.

Будьте готовы с Astra Security Suite к борьбе с любыми плохими парнями, которые могут угрожать безопасности вашего сайта!

Ознакомьтесь с нашим интеллектуальным брандмауэром и сканером вредоносных программ В бою

Остановите плохих ботов, SQLi, RCE, XSS, CSRF, RFI/LFI и тысячи кибератак и попыток взлома.

Попробуйте бесплатную пробную версию

Дайте нам знать, если вам это нравится 😃

веб-приложение — Есть ли способ загрузить файл PHP без его выполнения?

спросил

Изменено 3 года, 6 месяцев назад

Просмотрено 77 тысяч раз

Недавно я получил фишинговое письмо необычайно плохого качества; «Пожалуйста, немедленно войдите в систему по следующей ссылке, так как мы ваш банк, вы знаете» -иш. Ссылка указывает на неубедительный URL-адрес с

.php в конце.

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

Я действительно не хочу щелкать ссылку, чтобы узнать, но я хотел бы узнать, что этот PHP-файл собирается делать. Есть ли способ загрузить скрипт, например, с помощью клиентского JavaScript?

Или я не могу получить доступ к файлу PHP, так как он выполняется сервером?

Существуют ли другие безопасные способы анализа этого файла и его поведения?

  • веб-приложение
  • php
  • фишинг
9

Если сервер настроен правильно, вы не сможете загрузить файл PHP. Он будет выполняться при вызове через веб-сервер. Единственный способ увидеть, что он делает, — это получить доступ к серверу через SSH, FTP или какой-либо другой метод.

Это связано с тем, что PHP является серверным языком, все действия выполняются на сервере, затем результат отправляется в ваш браузер (который является клиентской стороной).

Если вы боитесь возиться со своей системой, вы можете использовать Virtualbox с виртуальной машиной Ubuntu и открыть страницу оттуда. Если вы сделаете снимок виртуальной машины после установки и до совершения опасных действий, позже вы сможете вернуться к этому снимку и отменить все, что сценарий мог сделать с виртуальной машиной.

6

Как уже говорили другие, файл PHP выполняется на стороне сервера, если только сервер не настроен настолько плохо, что будет просто обслуживать источник.

Если вы хотите проверить, что отправляется вашему клиенту, не опасаясь, что он сделает что-то неблагоприятное, используйте текстовый редактор, например Блокнот, чтобы открыть URL-адрес. То есть используйте

Файл → Открыть , но откройте URL-адрес, а не настоящий файл.

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

3

Есть способ если сервер содержит LFI эксплойт: https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion .

Однако, если сервер правильно настроен, он не сможет загружать файлы PHP.

Недавно я имел удовольствие исправить это в проекте, который я унаследовал, поэтому я знаю об этом. Можно напрямую загрузить PHP-скрипты, указав имя нужного скрипта над $_GET[] , что будет учитываться.

По правде говоря, вам должно повезти, чтобы эксплойт был возможен, и вам также нужно выяснить, как устроена файловая система сервера (т. е. каков относительный путь интересующего вас скрипта). по сравнению со скриптом, содержащим LFI-уязвимость) Поэтому, если вы планируете исследовать сервер, используйте песочницу/ВМ. Возможно, вам повезет, если сервер действительно плохо настроен, как следует из комментария Густаво Родригеса.

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

Когда пользователь посещает http://www.example.com/index.php , веб-сервер генерирует ответ HTML, /usr/bin/php выполняя файл index. php из /var /www/html .

Веб-серверы обычно настроены на выполнение 9Только файлы 0151 .php

, поэтому .jpg или любые другие типы файлов обслуживаются как обычно.

Если забывчивый системный администратор сделал копию файла .php для целей резервного копирования, вы можете получить копию без выполнения с помощью /usr/bin/php

Итак, если системный администратор сделал копию как /var/www/html/index.php.bak , вы можете загрузить его исходный код, посетив http://www.example.com/index.php.bak в своем браузере.

Поиск этих оставшихся файлов — трудоемкая задача, поэтому вы можете воспользоваться инструментами автоматического анализа URL-адресов.

Наконец, я рекомендую использовать curl для проведения этих экспериментов, потому что он не будет выполнять JavaScript или Flash на вашем компьютере.

1

Нет , вы не можете, потому что PHP выполняется на сервере. Конец.

  1. Нет необходимости получать код, потому что он не выполняется на вашем компьютере, поэтому для вас нет риска безопасности.
  2. PHP будет обслуживать веб-сайты, как и любые другие, поэтому нет конкретного ответа для PHP.

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

Вы не можете через HTTP, потому что

A)Код PHP, записанный в файл, удаляется из файла по протоколу http сервер перед отправкой на http-клиент

Таким образом, HTML-форма может ссылаться на blah.php, который содержит фрагмент кода php, код, окруженный тегами php, который проверяет, введен ли пароль = 1234, но если вы запустите wget blah.php, вы не увидите этот код. (даже если веб-сервер, поддерживающий php, позволил вам получить blah.php напрямую, не перенаправляя вас на получение какого-либо другого файла.