--=REKLAMA=--

Jak przenieść poufne pliki poza katalog publiczny?

Z Joomla!WikiPL

Wersja Zwiastun (dyskusja | edycje) z dnia 10:52, 7 lis 2010

(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

Trzeba to powiedzieć, wyzwaniem w Joomla! jest zabezpieczenie przed bezpośrednim dostępem z Internetu pewnych plików PHP w katalogu public_html zawierających kod wykonawczy lub dane poufne.

Są różne sposoby zabezpieczania takich plików, ale większość z nich nie jest optymalna. Wielu użytkowników i grup developerów, takich jak Gallery2 i Apache.org, zdecydowanie przestrzega przed trzymaniem wrażliwych plików wewnątrz katalogu public_html.

Przedstawione niżej metody wydają się najprostszym i najbardziej eleganckim sposobem zabezpieczenia plików tylko do odczytu, które z różnych powodów są przechowywane w public_html. W tym przykładzie zabezpieczymy configuration.php, być może najcenniejszy z punktu widzenia bezpieczeństwa plik Joomla!.

Stosujcie tę metodę, nawet jeśli serwer w jakiś sposób dostarczy pliki PHP włamywaczom - np. z powodu złej konfiguracji - dzięki niej nikt nie będzie w stanie zobaczyć realnej zawartości pliku konfiguracyjnego.

Procedura

1. Przenieś configuration.php do bezpiecznego katalogu poza public_html i zmień jego nazwę i rozszerzenie wedle swojego uznania. W przykładzie przyjęliśmy nazwę joomla.conf.

2.Utwórz nowy plik zawierający TYLKO następujący kod i zapisz go pod nazwą configuration.php (Patrz niżej "Ważne Uwagi").

<?php
require( dirname( __FILE__ ) . '/../joomla.conf' );

3. Upewnij się, że nowy plik configuration.php jest niezapisywalny, tak aby nie mógł zostać nadpisany przy zmianach w panelu administracyjnym Joomla!.

4.Jeżeli będziesz potrzebował zmian w konfiguracji, rób to ręcznie przez wpisy do pliku joomla.conf.

Ważne Uwagi!

W powyższym przykładzie kodu uważaj, byś nie wprowadził przed startowym tagiem PHP (<?php) tzw. białych znaków, czy linii (włączając w to puste spacje). Jeżeli to zrobisz, prawdopodobnie otrzymasz w wyniku taki błąd:
Warning: Cannot modify header information - headers already sent by (output started at  
/home/xxxxx/public_html/configuration.php:2) in /home/xxxxx/public_html/index.php on line 250
Zauważ, że brak kończącego tagu PHP (?>) jest celowy. Zrobiono tak, aby jakiekolwiek puste linie na końcu pliku nie były interpretowane jako HTML, co spowodowałoby błąd. Pominięcie kończącego tagu jest akceptowalną metodą unikania takich konfliktów. Rozwiązanie to działa, ponieważ interpreter PHP automatycznie zatrzymuje interpretację na końcu każdego pliku. Końcowy tag PHP jest konieczny tylko w kodzie HTML, w którym implementowano kod PHP, w tym samym pliku.
Zobacz także artykuł "Jak wyregulować definicje Joomla! 1.5?"

Dziękujemy za wkład

» Stefan Wajda [zwiastun],