2010-06-14 18 views
9

Widziałem zalecenia dotyczące przechowywania niektórych lub wszystkich plików php w niektórych miejscach poza katalogiem głównym dokumentów internetowych (nazwa użytkownika/public_html w moim przypadku) z konkretnego powodu ochrony plików php z danymi wrażliwymi. informacje (takie jak połączenie z bazą danych i dane logowania) w przypadku, gdy serwer internetowy czknie i przestanie chronić pliki php i stanie się "widoczny" dla osób z zewnątrz, które wiedzą, gdzie szukać.Przechowywanie plików skryptów poza katalogiem głównym domeny

Wydaje mi się to trochę paranoidalne, ale domyślam się, że ludzie źle się na tym wypalili, więc jestem skłonny iść dalej. Sugestia zazwyczaj ma postać plików włączających w coś takiego jak "../include_files/", więc nie jest bezpośrednio w katalogu głównym dokumentu i nie jest bezpośrednio dostępna dla osób postronnych za pośrednictwem serwera WWW.

Moje pytanie brzmi: czy istnieje znacząca różnica w bezpieczeństwie między tymi sposobami i po prostu umieszczenie katalogu "include_files" w katalogu głównym dokumentu i umieszczenie tam pliku .htaccess (z odpowiednimi wpisami)? Czy umieszczenie pliku .htaccess w pliku "../include_files/" spowoduje znaczną poprawę w tym przypadku? jest tam?

TIA,

Monte

Odpowiedz

13

Korzystanie .htaccess dodaje narzut, ponieważ Apache ma inny element, który musi sprawdzić i przetworzyć.

Utrzymywanie plików poza katalogiem głównym nie jest paranoikiem, to dobra praktyka. Co się dzieje, gdy ktoś uzyskuje dostęp do jednego z plików "dołącz" bezpośrednio i wyrzuca błędy, ponieważ wszystkie pliki wymagane wstępnie nie zostały załadowane?

Każdy plik musi mieć własne testy bezpieczeństwa, aby upewnić się, że działa w oczekiwanym środowisku. Każdy plik wykonywalny w obszarze dostępnym dla sieci jest potencjalną luką w zabezpieczeniach.

+0

+1 za wskazanie wydajności minusa .htaccess (również jeśli podasz AllowOverride None, Apache nawet nie szuka pliku). Uzgodnione w innych punktach w/dotyczy przechowywania plików z katalogu głównego; konfiguracja zajmuje kilka minut (zwłaszcza z __autoload/spl_autoload_register), więc dlaczego tego nie zrobić? –

+0

Problem polega na tym, że nie można tego zrobić w wielu/najczęściej dzielonych hostach. Nie? – docesam

+0

W moim doświadczeniu hosty udostępnione udostępniają katalog z katalogiem www, który jest ustawiony jako publiczny. –

4

To naprawdę zależy od tego co masz w include_files. Najważniejszą rzeczą jest to, że umieszczasz wszelkie dane uwierzytelniające poza katalogiem głównym (loginy bazy danych itp.). Wszystko inne jest naprawdę drugorzędne i nie ma większego znaczenia.

Jeśli nie chcesz ktoś kradzież kodu źródłowego następnie spróbuj śledzić konwencje Zend:

application 
library 
public 

punktów DocumentRoot do public i że zawiera tylko pliki multimedialne, JS/pliki CSS. HTML/widoki, logika db, conf/credentials są w application. Biblioteki innych firm znajdują się pod numerem library.

0

Teoretycznie, jeśli po prostu włożysz plik .htaccess do folderu, możesz nadal bezpośrednio wywoływać pliki .php.

Wyjęcie ich z katalogu głównego serwera; jednak uniemożliwia dostęp do nich kiedykolwiek przez kogoś, kto przegląda Twoją witrynę.

Powiązane problemy