| ||||||||||
Безопасность файловой системыPHP это субъект системы безопасности, встроенной в большинство серверных систем, с учётом разрешений на доступ к файлам и на базе директорий. Это позволяет управлять тем, какие файлы можно читать в файловой системе. Нужно проявлять осторожность при чтении любых файлов, чтобы гарантировать безопасность при чтении любыми пользователями, имеющими доступ к данной файловой системе. Поскольку PHP был разработан так, чтобы дать пользовательский доступ к файловой системе, можно создать PHP-скрипт, который позволит вам читать такие системные файлы как /etc/passwd, модифицировать внутрисетевые соединения, отправлять задания принтеру etc. Это, очевидно, подразумевает, что вы должны быть уверены, что файлы, которые вы читаете и записываете, являются соответствующими файлами. Рассмотрим следующий скрипт, где пользователь указывает, что он хотел бы удалить файл в своей home-директории. Это предполагает ситуацию, когда web-интерфейс РНР регулярно используется для работы с файлами, как в случае, когда пользователь сервера Apache может удалять файлы в своих домашних директориях. Поскольку username отправляется из пользовательской формы методом post, можно отправлять username и файл, принадлежащие кому-либо ещё, и удалять файлы. В этом случае может понадобиться использование какой-нибудь иной формы аутентификации. Посмотрим, что произойдёт, если буту отправлены переменные "../etc/" и "passwd". Код тогда сможет эффективно читать:
Есть два средства, которые вы должны использовать для предотвращения такого поведения.
Однако и здесь не без недостатков. Если ваша система аутентификации разрешает пользователям создавать свои собственные пользовательские login'ы и пользователь выберет логин "../etc/", система снова станет открытой. Исходя из этого, вам может понадобиться более специализированная проверка:
В зависимости от вашей ОС, необходимо предусматривать использование
разнообразных файлов, включая вхождения устройств (/dev/
или COM1), файлов конфигурации (/etc/ и .ini-файлы),
хорошо известные области хранения данных (/home/, My Documents), etc. | ||||||||||
|