Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak zabezpieczyć?
Forum PHP.pl > Forum > Przedszkole
Antidote
Witam,

Moje pytanie kieruję do bardziej zaawansowanych programistów php. Ponieważ ostatnio zajmuję się współpracą przy tworzeniu serwisu aukcyjnego bazującego właśnie na php i MySQL, zacząłem zastanawiać się nad kwestią bezpieczeństwa danych tam przechowywanych. Serwis ma docelowo obsługiwać kilka do kilkunastu tysięcy użytkowników. Chciałbym, aby stopień bezpieczeństwa był porównywalny np. do Allegro. Chodzi mi bardziej o rodzaje zabezpieczeń, niż konkretne linie kodu. Jakie techniki bezpieczeństwa są tam stosowane? A może jakie nie są, a powinny? Jak przebiega proces autoryzacji użytkowników? Czy korzystać z obsługi sesji i cookies? A może zastosować kodowanie plików php? Serwis będzie umożliwiał przesyłanie pieniędzy pomiędzy użytkownikami, tak jak w Płatnościach Allegro, więc kwestia bezpieczeństwa jest tu bardzo ważna.

Z góry dziękuję za wszelkie sugestie i komentarze, chciałbym zdobyć jak najwięcej informacji na ten temat. Jeśli ktoś dysponuje konkretnymi linkami do artykułów / tutoriali, chętnie się z nimi zapoznam.

Pozdrawiam smile.gif
E-d
Allegro robi tak że po rejestracj musisz poczekać na list i aktywować konto, to jest bardzo bezpieczne, dzięki temu nie zarejestruje się nikt na wymyślonych danych. Lepiej używać sesji smile.gif. Co rozumiesz przez kodowanie użytkowników ? Hasła napewno musisz zahashować (md5 lub sh1).
TomASS
ja raczej zajmuje się programami dla biznesu, do których dostęp mają tylko wybrani użytkownicy zdefiniowania przez administratorów systemu.
Oto zabezpieczenia
1. kodowanie hasłeł algorytmem md5, w bazie przetrzymywane są właśnie jako zakodowane
2. do komunikacji protokół ssl
3. monitoring wszelki zdarzeń i zapytań w systemie. Każdy użytkownik identyfikowany jest z imienia i nazwiska, więc jak coś narozrabia to odrazu wiadomo kto smile.gif
4. monitoring adresów IP używanych przez danego użytkownika - w momencie gdy pojawi się nowy adres, wtedy następuje interwencja. Niektórzy użytkownicy mają zablokowany dostęp i mogą kożystać tylko z idenego, konkretnego komputera (IP)
5. ważną sprawą jest informować użytkowników, aby tworzyli odpowiednie hasła - np. min 6 znakowe w tym conajmniej jedna cyfra, litera, znak interpunkcyjny + małe i duże litery
Master Miko
Co do wypowiedzi TomASSa ttylko dodam (technicznie):

2. Choć nie każdy serwer ma SSL (w rozwiązaniach biznesowych napewno są) jest to idealne rozwiązanie smile.gif

4. Najlepiej zrobić opcje "korzystam tylko z jednego adresu IP" i wytłumaczenie juzerowi o co w tym chodzi. Bo pamiętajmy, że musi mieć to do wyboru - np. będzie chciał coś kupić, a nie będzie go w domu... wtedy będzie miał głupio...

Najlepiej wtedy ustawić, blokadę na 1 ip i w razie potrzeby kontakt z administratorem...

5. Można do tego użyć już walidacji przez php - np. w przypadku braku duży liter, małych i cyfr wyburacza juzerowi że ma za słabe hasło.

Co do sesji najlepiej robić je aby trwały maksymalnie 5 minut (lub mniej) - im więcej czasu trfania tym większe prawdopodobieństwo, że może się stać coś złego..

Kolejnym dobrym pomysłem (stosowanym np. w wielu bankach na stronach internetowych) jest automatyczne wylogowanie juzera po dwóch minutach nic nie robienia...


Co do kodowania plików php - jeśli jest to system działający w zakresie prywatnym (np. tylko dla jednej firmy) niepotrzebne jest kodowanie plików php.
Tak naprawdę kodowanie plików php może się tylko przydać przy sprzedawaniu systemów php.
siemakuba
ja też powołam się na allegro.pl, ale z innej beczki nieco. Warto pokusić się o dodatkową autoryzację dla strategiczych dla systemu czynności. (allegro -> edycja profilu). Nawet przy krótko trwających sesjach może się zdażyć, że user zaloguje sie po czym oddali się od komputera a na jego miejscu pojawi się "zły user".

pozdr.
Jarod
Cytat(Master Miko @ 2006-05-13 08:45:12)
Kolejnym dobrym pomysłem (stosowanym np. w wielu bankach na stronach internetowych) jest automatyczne wylogowanie juzera po dwóch minutach nic nie robienia...

A jak coś takiego zrobić?
Master Miko
Np.
Używasz funkcji header (w php). Ustawiasz aby po 120 sekundach odsyłało Cię do strony logout.php (albo innej z logout)

Albo używasz tagu meta w ten sam sposób co header (jednak polecam header bo czasem meta się dziwnie zawiesza snitch.gif )
TomASS
No headerem to chyba nie za bardzo zmusić przeglądarkę do wylogowania się.
Master Miko
Oczywiście że się da!

  1. <?php
  2.  
  3. header("Refresh: 120;url=logout.php"); 
  4.  
  5. // po 2 minutach odsyła do pliku logout.php gdzie odbywa się logout :)
  6.  
  7. ?>
TomASS
Masz rację że się da headerem przeładować stronę - nie wiedziałem o tym:impreza:


Też dobry sposób na zabezpieczenie smile.gif Tylko teraz jak dołożyć aby np. w trakcie pisania czegoś w tekstarea się nie wylogował, tylko po np. 2 minutach bezczynności?
Master Miko
Niestety.... php nie ma takiej kontroli. Ja bym dał okres oczekiwania 3 minuty (tak jest chyba w intelligo i nikt nie narzeka). Natomiast w javascript dałoby się coś takiego zrobić... ale go można zawsze wyłączyć...

(ogólnie ja np. wole zostać wylogowany i jeszcze raz wpisywać dane niż być narażony na atak person-by-comp :/)

Ostatecznie można zrobić "porcjowanie danych" np. pierwsza strona wpisujesz 1 dane. Druga strona 2 dane itp. Wtedy wszystjo jest rozłożone w czasie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.