bezpieczeństwo strony, zabezpieczenia

0

Witam. Próbuję napisać stronę internetową o tematyce rozrywkowej jak demotywatory czy kwejk. Chciałbym się coś więcej dowiedzieć o możliwościach zabezpieczenia strony w kodzie, ale nie tylko, także katalogi ort!. Proszę o wymienienie jakichś ataków możliwych abym mógł sobie to zabezpieczyć. Kilka podstawowych typu sql injection, czy sesje (podanie komuś utworzonej sesji przez atakującego i przypadkowe podanie atakującemu np w linku swojej sesji), oraz w .htaccess indeksowanie katalogów i coś wyczytałem także o linkowaniu do grafik, co żre transfer. Z góry bardzo dziękuję.

0

Całe google jest pełne informacji, zacznij od przeczytania artykułu naszego kolegi "Programista vs. włamywacz, czyli o bezpieczeństwie aplikacji internetowych w PHP" - http://4programmers.net/Forum/Off-Topic/146203-magazyn_programista_62013_13_-_140_stron_wciagajacej_lektury?p=968124#id968124

0

jak zabezpieczyć pliki .css aby nie można było ich odczytać przez przeglądarkę? używając w .htaccess "deny from all" dla plików css, skrypt mi nie chce pobrać css'ów

0

A dlaczego chcesz zabezpieczyć pliki css??? Przecież wszystko co trafia do przeglądarki (css, html, wszystkie requesty ajaxa itp.) skoro do niej trafiło da się odczytać. Skoro przeglądarka ma wyświetlić, to też musi to odczytać :]

A poza tym, jaki związek ma bezpieczeństwo strony z uniemożliwieniem odczytania plików css (jak zgaduję chcesz je uchronić przed "skopiowaniem" - zapomnij)?

0

Witam. Sprawdzałem czy muszę filtrować zmienne do warunków i natknąłem się na coś takiego:

mam kod:

$yaka = $_GET['fak'];
    echo htmlspecialchars($yaka); 
    if(!empty($yaka))
      echo 'yolo';

w linku daję:

?fak=&1

nie wyświetla mi żadnego tekstu, nie spełnia sie ten warunek if(!empty($yaka)) czyli wskazuje na to że $yaka jest puste...
a htmlspecialchars nic nie daje

wszystko przez ten znak & w linku. Co to takiego?

I takie pytanie jeszcze, czy trzeba filtrować zmienne sesyjne, globalne, post, get w warunkach? np.

empty($_SESSION['lifetime']) || !is_numeric($_SESSION['lifetime'])

// edit
dzięki dzek, nie pomyślałem ;( ;p

0

& rozdziela kolejne parametry w linku. więc w efekcie masz zmienne fak (pusta) oraz bodajże 1 (też pusta).
zrób sobie var_dump($_GET);

filtruj/weryfikuj zmienne zawsze, gdy mogą zawierać nieznane Ci wartości bądź wprowadzone od użytkownika.

0

dzięki za pomocne odpowiedzi ;)

metoda HTTP - TRACE - można przez nią pobrać informacje o cookies i dane autoryzacyjne chyba wszystkich użytkowników.
Czy dziś, należy ją jeszcze blokować, czy każdy lub te poważniejsze firmy hostingowe blokują tą metodę, czy muszę ją sam zablokować?
W googlu znalazłem coś takiego:

Wyłączenie metody TRACE można wykonać za pomocą modułu rewrite – dopisując do głównego pliku konfiguracyjnego /etc/httpd/httpd.conf dyrektywy:

<IfModule mod_rewrite.c>
	   RewriteEngine on
	   RewriteCond %{REQUEST_METHOD} ^TRAC(E|K)
	   RewriteRule .* - [F]
	</IfModule>

W przypadku wykorzystania mod_rewrite każdy wirtualny host, który ma podlegać ochronie przed metodą TRACE musi zawierać w swojej konfiguracji reguły:

RewriteOptions inherit
	RewriteEngine on

Dobrze rozumiem, że ten 1 kod mogę sobie wpisać do .htaccess w głównym katalogu i, że atak metodą TRACE jest do przeprowadzenia przez atakującego po przez wstrzyknięcie kodu w stronę, więc, gdy uniemożliwie wstrzyknięcie takiego kodu, to raczej nie będzie możliwości wykonania takiego ataku? (na necie napisane jest także że przez emaila da się taki atak przeprowadzić)
Ten 2 kod nie będzie mi potrzebny?

0

TRACE jest domyślnie wyłączony, nie znalazłem hostingu, na którym byłoby to dostępne. Dopóki ktoś tego celowo nie włączy to tego nie będzie, nie jest to coś, czym powinieneś sobie głowę zaprzątać.

Druga rzecz - nie mając pojęcia o podstawach podstaw - nie myśl o zabezpieczeniach na tym poziomie, zrobisz jeszcze gorzej, nie mając pojęcia co właściwie robisz.

0

robiąc autologowanie, zrobiłem po prostu przedłużanie ciasteczka z id sesji. Czy jest to poprawny i bezpieczny sposób? Przeczytałem gdzieś o tokenach i chcę się upewnić czy tu nie trzeba sie bawić w tokeny.

0

Twoje przedłużenie raczej nie ma sensu - sesja zostanie wyczyszczona po stronie serwera (sesja to pliki o takiej samej nazwie jak ID sesji, folder ten jest czyszczony zgodnie z ustawieniami gc_* w php.ini, do którego nie masz dostępu na zwykłym serwerze), więc ktoś kto wbije na sesję sprzed dwóch dni i tak będzie miał pustą sesję.

0

Więc można zrobić to przez wygenerowanie hasha, który zapisuję w ciasteczku i w bazie danych, po wejściu na stronę porównuję hashe i jesli beda sie zgadzały to dopisuję do sesji użytkownika jego id z bazy danych (bo właśnie id usera trzymam w sesji) ?

0

tak, to są właśnie te tokeny

1 użytkowników online, w tym zalogowanych: 0, gości: 1