Я працюю з адміністрацією систем в університеті і просто натрапив на щось, що, мабуть, є загальним, але для мене було досить шоком.
Усі каталоги public_html та веб-області зберігаються на afs з дозволами читання для веб-серверів. Оскільки користувачам дозволено мати PHP-скрипти у своєму public_html, це означає, що вони можуть отримувати доступ до файлів один одного зсередини php (та основних веб-файлів!).
Це не лише робить повний захист паролем .htaccess, але також дозволяє користувачам читати вихідні файли php, що містять паролі бази даних mysql та подібну конфіденційну інформацію. Або якщо вони виявлять, що інші люди мають каталоги, куди веб-сервери мають доступ до запису (наприклад, для особистих журналів або для збереження поданих даних форми), вони можуть зберігати файли в цих облікових записах.
Простий приклад:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
Це поширена проблема? І як ти зазвичай це вирішуєш?
ОНОВЛЕННЯ:
Дякуємо за вклад. На жаль, здається, немає простої відповіді. У великих умовах спільного використання, таких як це, користувачі, мабуть, не повинні мати такий великий вибір. Кращий підхід, про який я можу придумати, - це встановити "open_basedir" в основній конфігурації для всіх каталогів "public_html", запустити suphp і дозволити лише чистий php (без скриптів cgi, запуску зовнішніх команд із задніми таблицями тощо).
Якщо змінити таку політику, можна було б зламати багато речей, і цілком можливо змусити користувачів захопити їхні вини та переслідувати нас ... Я обговорю це з колегами та оновлю тут, якщо ми приймемо рішення про те, як змінити налаштування.
open_basedir
рішення щодо спільних виробничих хостингових систем, але ми розділили кожного на свій власний vhost - Не впевнений, чи працює він для окремих каталогів ...