Pliki konfiguracyjne .htaccess
Do czego służą pliki .htaccess ?
Plik .htaccess pozwala na pewne zmiany w konfiguracji serwera. Zmiany te są widoczne tylko w podkatalogach i katalogu, w którym ten plik się znajduje. Za pomocą pliku .htaccess można zmieniać/konfigurować niektóre dyrektywy Apache lub też ustawienia PHP bez konieczności grzebania w plikach konfiguracyjnych serwera. Najpierw musimy jednak poinformować Apache w pliku głównym httpd.conf, że chcemy umożliwić użytkownikom zmianę konfiguracji poprzez pliki .htaccess
Ustawmy więc globalnie:
<Directory /> AllowOverride All </Directory>
Spowoduje to możliwość zmiany konfiguracji przez wszystkich użytkowników. Możemy więc ograniczyć działanie tej dyrektywy poprzez indywidualne przyznanie możliwości konfiguracji np. tylko dla wybranych wirtualnych hostów:
# na początek blokujemy wszystkim <Directory /> AllowOverride None </Directory> # dla poniższych hostów pozwalamy nadpisywać dyrektywy <VirtualHost test.pl> <Directory /home/user/html> AllowOverride All </Directory> </VirtualHost>
Musimy poinformować Apache jakie pliki będą zawierały tę konfigurację oraz zabezpieczyć je aby nikt niepowołany nie miał do nich dostępu. Ustawiamy globalnie w httpd.conf:
AccessFileName .htaccess # oraz zakładamy blokadę <Files ~ "^\.ht"> Order deny,allow Deny from all </Files>
I to wszystko. Aby nowa konfiguracja zadziałała należy zrestartować serwer http. Poniżej najważniejsze ustawienia.
- OGRANICZENIE DOSTĘPU DO STRON WWW HASŁEM:
W katalogu, który chcemy zabezpieczyć należy umieścić plik o nazwie .htaccess zawierający następujące polecenia dla serwera WWW:AuthName "Restricted Area" AuthType Basic AuthUserFile /var/www/html/wiki/.htpasswd AuthGroupFile /dev/null require valid-user
zamiast require valid-user możemy użyć następujących opcji:
- Access allow all users janek zosia – Udziela dostępu z dowolnego adresu IP użytkownikom „janek” oraz „zosia”
- Access allow 212.85.112.3 – Udziela dostępu dowolnemu użytkownikowi łączącemu się z konkretnego IP (212.85.112.3), odmawiając innym tego dostępu.
- Access allow all groups wtajemniczeni – Udziela dostępu łączącemu się z dowolnego IP i jednocześnie autoryzującego się loginem należącym do grupy „wtajemniczeni”.
Następnie tworzymy plik z użytkownikami i ich hasłami, wpisując w trybie terminalowym poleceniem:
htpasswd -c /home/uzytkownik/public_html/.htpasswd username
Program dwukrotnie zapyta o hasło dla użytkownika „username” i zapisze go do pliku „.htpasswd”.
Przy dodawaniu kolejnego użytkownika należy pominą flagę „-c” przy wywoływaniu htpasswd. - WŁASNE STRONY BŁĘDÓW:
Za pomocą .htaccess możesz zdefiniować reakcję na pojawienie się błędu przy wywołaniu strony WWW. Wynikiem działania może być wyświetlenie tekstu (umieszczanego w cudzysłowie), określonego dokumentu bądź adres, pod który nastąpi przekierowanie.Składnia polecenia:
ErrorDoc <kod_błędu> <reakcja>
Przykład:
ErrorDoc 404 "Na serwerze nie ma takiego dokumentu" ErrorDoc 403 http://www.prezydent.pl ErrorDocument 500 /500.php ErrorDocument 503 /503.php
- LISTOWANIE ZAWARTOŚCI KATALOGU ZA POMOCĄ .htaccess:
Funkcja listowania zawartości katalogu jest szczególnie użyteczna w sytuacji, kiedy bezpośrednio ze strony WWW chcesz umożliwić ściąganie wielu plików bez potrzeby każdorazowego wykonywania dokumentu HTML, zawierającego odnośniki do udostępnianych zasobów. Za konfigurację odpowiadają trzy parametry:- Options +Indexes – włączenie listowania zawartości katalogu,
- IndexIgnore *.htm – na listingu nie bądą wyświetlane pliki *.htm
- IndexOptions +FancyIndexing – sprawia, że lista plików zawiera ikonki.
- IndexOptions -FancyIndexing – sprawia, że wygląd listy jest uproszczony.
- HeaderName – nazwa pliku zawierającego nagłówek generowanej listy,
- ReadmeName – nazwa pliku z dolną częścią strony/listy.
Przykład:
IndexIgnore *.htm Options +Indexes IndexOptions -FancyIndexing HeaderName top.htm ReadmeName bottom.htm
- CAŁKOWITE BLOKOWANIE DOSTĘPU DO STRONY:
Za pomocą .htaccess można całkowicie zablokować dostęp do strony użytkownikom Aby tego dokonać, należy wpisać do pliku dwie linie:order allow,deny deny from all
Można także zablokować dostęp użytkownikom z konkretnych numerów IP lub należących do określonej domeny.
order allow,deny deny from edu.prv.pl allow from all
Co oznacza: zablokuj dostęp dla wszystkich łączących się z domeny edu.prv.pl (zamiast domeny można podać numer IP), oraz zezwól na dostęp pozostałym.
- BLOKOWANIE DOSTĘPU DO WYBRANYCH PLIKÓW:
Do blokowania wybranych plików służy dyrektywa FILES:<Files admin.php> order allow,deny allow from 127.0.0.1 deny from all </Files>
- BLOKOWANIE DOSTĘPU ZA POMOCĄ .htaccess oraz rewrite_mod:
W katalogu, który chcemy zabezpieczyć należy umieścić plik o nazwie .htaccess zawierający następujące zawartości:RewriteEngine On Options +FollowSymlinks RewriteBase / RewriteRule ^(.*) komunikat.html
W pliku komunikat.html umieszczamy oczywiście komunikat np. o przyczynie zablokowania strony.
- USTAWIENIA PHP
Składnia dyrektyw zmieniających konfigurację PHP jest następująca:php_flag nazwa on|off
Przykład:
## Wylaczenie rejestrowania zmiennych globalnych php_flag register_globals off ## Wylaczenie interpretacji krotkich znacznikow PHP php_flag short_open_tag off ## Wylaczenie kompresji zlib, gdy powoduje problemy php_value zlib.output_compression 0 ## Zwiekszenie limitu pamieci php_value memory_limit 32M ## Wlaczenie magicznych cudzyslowow dla GPC php_flag magic_quotes_gpc on ## Wylaczenie wyswietlania bledow php_flag display_errors off ## Inne ustawienia dotyczące wyswietlania błedów php_flag log_errors on php_value track_errors on php_value error_log /home/cor/errors/phperr.log #maksymalna wielkość uploadowanego pliku itd. php_value upload_max_filesize 12M php_value post_max_size 12M # włączamy wykonywanie skryptów php z plikach o określonych rozszeżeniach AddType application/x-httpd-php5 .htm .html .php .inc
Ile razy widzę spam w takiej ilości to aż mi się odechciewa prowadzić strony www 😀
Uczę się z książki programowania php sql itd. ale napotkałem problem gdzie strony nie są poprawnie wyświetlane jeśli część zawartości znajduje się poza katalogiem gdzie jest plik index.php/html
Na przykład zdjęcia umieszczam katalog niżej ../ i już strona nie chce wyświetlić zdjęcia mówiąc, że plik nie istnieje(kombinowałem ze ścieżką na różne sposoby).
Wychodzi na to, że serwer nie udostępnia plików niżej niż katalog z index.html.
Jak mogę prosić o pomoc to jak skonfigurować plik htaccess aby był dostęp do katalogu niżej, ale chcę aby strona była bezpieczne.
Ponoć umieszczanie ważnych plików niżej jest bezpieczniejsze dla strony.html
Za odpowiedź z góry dziękuje
Niestety nie wyświetli Pan zdjęć jeśli są poza „root katalogiem”