webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> porady >> php + mysql

Zabezpieczenie przed bezpośrednim wejściem

autor: Bartosz 'regua' Reguła, ostatnia modyfikacja: 2007-02-23

szukaj: definiowanie stałej definiowanie stałej nagłówki HTTP nagłówki HTTP zabezpieczenie skryptu zabezpieczenie skryptu PHP PHP

Jeśli na swojej stronie internetowej używacie jednego pliku jako 'bazy' i tylko załączacie w nim różne pliki - PHP'owymi funkcjami takimi jak include czy require lub chociażby zwykłym iframe'em - jesteście narażeni na bezpośrednie wejście do pliku, czyli otwarcie tego, co powinno zostać wyświetlone tylko i wyłącznie w pliku-bazie.

Czym to może grozić? W większości przypadków niczym, ale jeśli np. instrukcje obsługujące bazę danych czy style CSS masz w pliku-bazie, bezpośrednie wejście do plików witryny spowoduje nieprawidłowe ich wyświetlenie (np. bez danych pobranych z bazy SQL czy bez styli), a może w plikach są dane, których nie chcesz pokazywać userom?...

Jak się przed tym chronić? Jest to łatwiejsze niż myślisz.
Użyjemy sposobu podobnego do tego użytego w phpBB. Polega on na dodaniu do pliku-bazy jednej stałej, np.

define('WEBMADE', true);

Ponadto w każdym z plików, który nie może być wyświetlony oddzielnie, należy wpisać ten kod:

if (!defined('WEBMADE') || !WEBMADE) {
 header('HTTP/1.1 301 Moved Permanently');
 header('Location: http://'.$_SERVER['HTTP_HOST'].'/');
 exit;
}

Powyższy skrypt sprawdzi, czy stała "WEBMADE" została zdefiniowana i ma wartość 'true'. Jeśli nie - wysyła kod odpowiedzi HTTP 301 (znaczy to, że "żądany zasób zmienił swój URI i w przyszłości zasób powinien być szukany pod wskazanym nowym adresem" - z Wikipedii) i przekieruje do twojej strony głównej (jeśli nie chcesz, by przekierowywało właśnie do niej, zmień fragment za to odpowiedzialny wedle uznania, np.:

header('Location: http://webmade.org/');

Zabezpieczenie proste, wręcz banalne w użyciu - a zabezpiecza cię przed natrętnymi i ciekawskimi użytkownikami ;)

Pamiętaj, aby przy wysyłaniu nagłówków użyć buforowania

Bartosz 'regua' Reguła

Osoby czytające tę publikację przeglądały również:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org