Pracuję z administracją systemów na uniwersytecie i natknąłem się na coś, co prawdopodobnie jest powszechne, ale było dla mnie dość szokiem.
Wszystkie katalogi public_html i obszary sieciowe są przechowywane w systemie plików afs, z uprawnieniami do odczytu dla serwerów sieciowych. Ponieważ użytkownicy mogą mieć skrypty php w swoim pliku public_html, oznacza to, że mogą uzyskiwać dostęp do swoich plików z poziomu php (i głównych plików internetowych!).
To sprawia, że ochrona hasłem .htaccess jest całkowicie bezużyteczna, ale pozwala również użytkownikom czytać pliki źródłowe php zawierające hasła do bazy danych mysql i podobne poufne informacje. Lub jeśli stwierdzą, że inne osoby mają katalogi, w których serwery internetowe mają dostęp do zapisu (np. Do dzienników osobistych lub w celu zapisania przesłanych danych formularza), mogą przechowywać pliki na tych kontach.
Prosty przykład:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
Czy to powszechny problem? Jak zazwyczaj to rozwiązujesz?
AKTUALIZACJA:
Dzięki za wkład. Niestety wydaje się, że nie ma prostej odpowiedzi. W dużym wspólnym środowisku, takim jak to, użytkownicy prawdopodobnie nie powinni mieć tak dużego wyboru. Najlepszym podejściem, jakie mogę wymyślić, jest ustawienie „open_basedir” w głównej konfiguracji dla wszystkich katalogów „public_html”, uruchomienie suphp i zezwolenie tylko na czyste php (bez skryptów cgi, uruchamianie zewnętrznych poleceń z backtickami itp.).
Zmiana zasad w ten sposób złamałaby wiele rzeczy i całkiem możliwe, że użytkownicy złapią widły i nas ścigają ... Omówię to z kolegami i zaktualizuję tutaj, jeśli podejmiemy decyzję o zmianie konfiguracji.
open_basedir
poniższego rozwiązania na produkcyjnych współdzielonych systemach hostingu, ale podzieliliśmy wszystkich na ich własnych vhostów - Nie jestem pewien, czy to działa dla pojedynczych katalogów ...