Cześć.
Bezpieczeństwo
Joomla! to jest bardzo szerokie i ogólne pojęcie. Pytasz o to, czy instalując Joomla na serwerze, nikt Cię nie zhackuje, nie podkradnie lub podrzuci jakieś "lewe" pliki?.
To jest tak jak z systemem operacyjnym na komputerze. Jedni będą uważać, że najlepszym programem antywirusowym jest np.
Kaspersky Anti-Virus, a inni że
Avast!. I jedni i drudzy mają rację. Bo dużo wolniejszy od
Avasta! Kaspersky Anti-Virus przy zaniedbaniu przez Ciebie porządku na dyskach twardych komputera, może być prawie bezużyteczny ( opinie na temat tych programów antywirusowych są oczywiście moje, i każdy może się z nimi nie zgadzać ). A np.
Avast! doskonale radzi sobie nawet przy "
zapchanych" i
zaśmieconych dyskach. Ale też może zdarzyć mu się "
wpadka". Wszystko zależne jest więc nie tylko od samych programów, ale i środowiska, a właściwie jego stanu w jakim owe programy pracują.
Podobnie jest z
Joomla!. Ja mam wersję
Joomla 1.0.7, ale system mam zabezpieczony w każdy możliwy sposób. A to przez pliki
.htaccess, a to przez specjalne pliki
index.php. Znam wielu ludzi, którzy mają nowsze wersje
Joomla!, i ciągle mają jakieś
wrzutki na serwer, lub wiele innych objawów ingerencji osób niepowołanych w system plików
Joomla!.
Generalnie. Jak najwyższa wersja
Joomla! ( obecnie dostępna jedyna stabilna wersja, to
Joomla 1.0.11, lub nieoficjalne wersje, wśród których znajdzie się moja modyfikacja CMS-a, wkrótce
), i dbanie o bezpieczeństwo serwera, stosując się do wielu poradników dostępnych w internecie. Bo cóż po tym, że ktoś ma
Joomla 1.0.13 ( najbezpieczniejsza wersja, ale z błędami! ), skoro
chmody plików, ze względu na
niedbałość adminów serwera, lub małą profesjonalność i wiedzę tychże ludzi musi ustawiać na
777, co zdarza się często, i to nawet na płatnych serwerach. Taki
niezabezpieczony dodatkowo plik, oczywiście poprzez odpowiednie wpisy, jest
dostępny praktycznie dla każdego z zewnątrz. To samo dotyczy katalogów. Wystarczy wpisać frazę w Google "
index of/ Joomla" a uzyskasz tysiące wyników z niezabezpieczonymi katalogami, oczywiście
Joomla!. A przecież można w prosty sposób uniemożliwić tego rodzaju listowanie katalogów lub folderów na serwerze.
Oczywiście, podstawowym zabezpieczeniem katalogu jest plik
index.html, z tak zwanym "
pustym body", lub własnym ( przykład możesz znaleźć
TUTAJ ). Ale zdarza się czasami, że nie możemy tam wstawić tego pliku.
Tworzymy wówczas plik
.htaccess i dodajemy do niego tylko jeden wpis:
...nic więcej. Ten wpis wyśle polecenie do
Apache, aby nie zezwalał na indeksowanie zawartości katalogu. I gdzie tylko to jest możliwe, możemy taki plik
.htaccess wrzucić do katalogów. Przykład działania pliku
.htaccess możesz zobaczyć na mojej stronie
TUTAJ.
Jeszcze iny sposób, to specjalny plik
index.php, który ma za zadanie przekierowanie wścibskiego delikwenta np. na
Stronę Głowna serwisu. Robimy to w ten sposób:
Kod 1:
Kod: |
<?php
header("Location: /");
die();
?>
|
Zadziałanie skryptu spowoduje przekierowanie do katalogu wyższego poziomu, o ile plik
index.php, ten z cytowanym kodem znajduje się w podkatalogu root ( głównym )
Joomla!. Możesz zobaczyć działanie na następnym przykładzie, też z mojej strony
TUTAJ.
Taki kod:
Kod 2:
Kod: |
<?php
header("Location: ../");
die();
?>
|
...też spowoduje przemieszczenie
intruza do katalogu wyższego poziomu. Możemy zastosować coś w rodzaju drzewa, w którym to w katalogu położonym najgłębiej umieszczamy
index.php z kodu
1 lub
2. Następnie w każdym z katalogów położonych "wyżej" w hierarchii drzewa wrzucamy ten sam plik
index.php z kodu
1 lub
2. Spowoduje to przeskoczenie wszystkich katalogów od najgłębiej położonego do np.
Strony Głównej. Poniżej masz linki, obrazujące strukturę drzewa katalogów. Umieściłem je w znacznikach
<code> ze względu na ich długość. Ale pod nimi możesz zobaczyć efekt działania tej metody. Możemy ją nazwać "
Drzewiasty Dostęp" lub "
Schodowy Dostęp", albo raczej brak dostępu
:
Kod: |
http://www.jokris.info/foldernajwyzej/foldernizej/foldernizej/foldernizej/foldernizej/foldernizej/
foldernajnizej/
http://www.jokris.info/foldernajwyzej/foldernizej/foldernizej/foldernizej/foldernizej/foldernizej/
http://www.jokris.info/foldernajwyzej/foldernizej/foldernizej/foldernizej/foldernizej/
http://www.jokris.info/foldernajwyzej/foldernizej/foldernizej/foldernizej/
http://www.jokris.info/foldernajwyzej/foldernizej/foldernizej/
http://www.jokris.info/foldernajwyzej/foldernizej/
http://www.jokris.info/foldernajwyzej/
|
...co da efekt przeskoku. Sprawdź to klikając na poniższe linki:
1 - Najgłębiej położony katalog -
Zobacz.
2 - Katalog wyżej -
Zobacz.
3 - Katalog wyżej -
Zobacz.
4 - Katalog wyżej -
Zobacz.
5 - Katalog wyżej -
Zobacz.
6 - Katalog wyżej -
Zobacz.
7 - Katalog najwyżej położony -
Zobacz.
Jeszcze jeden sposób, to ochrona dostępu do katalogów specjalnym plikiem do autoryzacji o nazwie
.htpasswd, oraz plikiem
.htaccess.
Zawartość pliku
.htaccess powinna ogólnie wyglądać tak jak na poniższym kodzie:
Kod: |
AuthType Basic
AuthName "Katalogu"
AuthUserFile /home/x/x/x/user/www/katalog/.htpasswd
require valid-user
|
/home/x/x/x/user/www - jest to przykładowa część ścieżki dostępu do pliku
.htpasswd, i oczywiście możemy ją odczytać z pliku
configuration.php ze zmiennej
$mosConfig_absolute_path. Jeśli chcemy dokładnie znać adres położenia pliku
.htpasswd, wpisujemy poniższy kod do dowolnego
Notatnika ( najlepiej
Notatnik SP ), i zapisujemy go np. jako
pathinfo.php.
Oto kod pliku
pathinfo.php:
Kod: |
<?php
function dirnamepath(){
$path_dirname = pathinfo(__FILE__);
return $path_dirname['dirname'];
}
$path_htpasswd = dirnamepath();
if (file_exists($path_htpasswd."/.htpasswd")) {
$file_htpasswd = '.htpasswd';
echo $path_htpasswd."/.htpasswd";
} else {
$file_htpasswd = '';
echo $path_htpasswd;
}
?>
|
Wrzucamy go do katalogu, który chcemy zabezpieczyć, i wywołujemy z adresu przeglądarki, dodając do naszego adresu strony ścieżkę do owego katalogu, np:
administrator, czyli całość może wyglądać tak ( link oczywiście przykładowy i nie zadziała na moim serwerze, ze względu na brak owego pliku pod tym adresem ):
http://www.jokris.info/pathinfo.php
Wynikiem zadziałania skryptu będzie nasza ścieżka do katalogu, lub jeśli mamy plik
.htpasswd, cała ścieżka którą wpiszemy do pliku
.htaccess. Poniżej już kod wynikowy pliku
.htaccess wykorzystujący pełną ścieżkę z pliku
pathinfo.php :
Kod: |
AuthType Basic
AuthName "Panel administratora Joomla"
AuthUserFile /home/x/x/x/user/www/administrator/.htpasswd
require valid-user
|
Teraz jak powinien wyglądać plik
.htpasswd. Oto przykład pliku
.htpasswd:
Hasło jest zakodowane ( zaszyfrowane! ), więc możesz skorzystać z "
Generatora Hasła dla .htpasswd".
Na koniec kilka uwag. Plik
.htaccess z autoryzacją dostępu może znajdować się w dowolnym katalogu, czyli np. "
/administrator/.htaccess", z tym że musi być w nim określona w sposób opisywany powyżej ścieżka do pliku
.htpasswd. Ten ostatni może znajdować się w innym katalogu niż plik
.htaccess. Ważne aby trzymać się opisanych przeze mnie zasad. To tyle. Myślę że już trochę wiesz o bezpieczeństwie
Joomla!. To naprawdę porządny CMS.
Pozdrawiam.
Jokris.