Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zabezpieczenie formularzy
itsme
post
Post #1





Grupa: Zarząd
Postów: 1 512
Pomógł: 2
Dołączył: 22.04.2002
Skąd: Koszalin




Witam,

Jestem ciekawy Waszych doświadczeń i sposobów zabezpieczania formularzy przed niebezpiecznymi wpisami (zaznaczam ze nie chodzi mi o to jak zrobić aby cyferek nie wpisać).

Moje doświadczenie w tym zakresie jest znikome zaś literatura w tym zakresie też jest skromna.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dragossani
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 398
Pomógł: 0
Dołączył: --
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Skoro już temat znalazł się na php pro to proponuję go poszerzyć o ogólne zasady związane z bezpieczeństwem aplikacji. Sądzę, że ktoś rozwinie temat. Na początek kilka uwag:

Instalacja php - należy zwracać uwagę na opcje mające kluczowy wpływ na bezpieczeństwo działania serwera. php jako moduł CGI jest bardziej podatne na ataki niż skompilowane statycznie z Apache'm (niestety kompilacja statyczna jest mało elastyczna). Jeśli już php kompilujemy jako CGI to musimy dabć by były włączone flagi takie jak --enable-force-cgi-redirect - chyba, że chcemy aby ktoś nam grzebał w katalogach do których teoretycznie zabezpieczyliśmy dostęp przez .htaccess (szczegóły w książce PHP4 Aplikacje).
Pliki - wszystko co nie jest zwykłym HTML'em lepiej trzymać poza głównym drzewem Apache'a. Nigdy nie wiemy czy nie zostanie odkryta dziura w Apache'u, przez którą będzie można dostać się do udostępnianego katalogu?
Skrypty - wszystkie dane z zewnątrz (GET, POST, COOKIE <- też) należy traktować jako podejrzane. Nie zakładajmy, że ktoś po prostu kliknął na naszej stronie link i parametry, które otrzymujemy pochodzą właśnie stamtąd. Ktoś może napisać własny skrypt i walić nam dane POST'em takie jakie mu się tylko przyśnią. Każdy może zmienić zmienną i dostać się do strony, która jest nie dla niego, jeśli mu na to pozwolimy. Dlatego wszystko należy przefiltrowywać (wydaje mi się, że widziałem kiedyś na Zend'zie skrypt kontrolujący, czy zmienne przekazywane pomiędzy naszymi stronami nie zostały zmodyfikowane - test sumą kontrolną, czy czymś w tym rodzaju), a jeżeli zmienna wpływa na dostęp do plików to MUSIMY zadbać o to, żeby nikt nam nie zmieniał ścieżek dostępu (vide funkcja basename()) i nie wydawał poleceń systemowych (vide EscapeShellCmd()). O użyciu exec() już nawet nie wspominam.
Sprawa o której mało kto pamięta: długość zmiennych - lepiej to kontrolować, bo każdy bufor da się przepełnić, a DenialOfService to nie najprzyjemniejsza sytuacja.
Następna sprawa: register_globals=off to dobry nawyk. Co prawda sesji nic nie grozi ale już zmienne środowiskowe da się nadpisać (variables_order=EnviromentGetPostCookieSession). Jak mamy Off to wszystko jest pod kontrolą i w dodatku wyrabiają się nam dobre nawyki programistyczne.
Jeśli zabieramy się za szyfrowanie to róbmy to z głową - funkcje typu MD5 albo biblioteka MCrypt to dobre rozwiązanie, a własna twórczość niekiedy nie.
Próbując zydentyfikować użytkownika albo cokolwiek innego, lepiej nie używać cechy, którą da się manipulować, ani takiej, która nie jest unikalna (np. numer IP). Dla osób unikalny jest PESEL, dla firm REGON (a nie NIP), a np. dla pojazdów VIN (a nie numer rejestracyjny).
Jeśli przez sieć wędrują hasła albo tajne informacje to MUSIMY je szyfrować - najprościej przez SSL. Lepiej męczyć się przez SSL bez wykupienia certyfikatu (uciążliwe komunikaty) niż olać całą sprawę. Sniffer'a może użyć każda lama.
Jeśli można, to zrzucamy do logów wszystko co się da. Można i należy samodzielnie logować wszystkie posunięcia userów w naszym serwisie - opłaci się to, gdy trzeba będzie zidentyfikować problem.
Na koniec taki detal: komunikaty o błędach lepiej przechwytywać i nie walić userom na ekrany, bo usterka może się trafić każdemu, a dla włamywacza informacja typu: 'brak praw dostępu do katalogu cośtam/cośtam/' albo 'Postgres: syntax error in bleble' są bardzo cenne.
Go to the top of the page
+Quote Post

Posty w temacie
- It's_me   Zabezpieczenie formularzy   7.03.2003, 13:18:26
- - dragossani   Skoro już temat znalazł się na php pro to proponuj...   7.03.2003, 16:32:37
- - Seth   Zabezpieczajac dany skrypt itp. musimy tez pamieta...   8.03.2003, 19:55:13
- - mazy   Niema po co wpadać w oanikę, ale zawsze należy spo...   30.03.2003, 19:20:28
- - freyman   Na idiotów jest prosty sposób - zrobić bardzo rygo...   21.05.2003, 11:19:11
- - puklos   Dodałbym jeszcze bardzo staranną walidację danych ...   21.05.2003, 20:35:00
- - halfik   Jezeli chodzi o formularze rejestracyjne to dobe w...   26.05.2003, 13:26:43
- - Pianandrill   Może powinienem to umieścić w osobnym wątku ale tu...   2.06.2003, 18:47:23
- - spenalzo   1. Sprawdzać poprawność danych i weryfikować email...   2.06.2003, 22:01:13
- - halfik   //1. Do jakiego stopnia i w jaki sposób kontrolowa...   4.06.2003, 17:01:38
- - Wankster   //2.//halfik: Ja po zalogowaniu wysyłam 3 ciacha: ...   4.06.2003, 20:47:47
- - halfik   Wankster: ale mi nie o to chodzilo. Co Ci da kodow...   5.06.2003, 14:28:34
- - LeWaR   Ja w sesji ustawiam czy klient jest zalogowany czy...   5.06.2003, 14:46:55
- - kwiateek   Cytat//2.//halfik: Ja po zalogowaniu wysyłam 3 cia...   5.06.2003, 14:53:42
- - halfik   LeWaR: ale w tym momencie latwo jest dostac sie do...   5.06.2003, 18:14:29
- - DeyV   Jeżeli dane mają być przechowywane tylko na czas s...   5.06.2003, 18:41:44
- - LeWaR   Cytatale w tym momencie latwo jest dostac sie do s...   6.06.2003, 08:20:34
- - Pianandrill   Dzięki za odpowiedź oczywiście ze haseł nie przec...   7.06.2003, 09:50:10
- - halfik   ad 1. wg. mnie tak, jesli chesz odrobine zwiekszyc...   9.06.2003, 06:17:51
- - spenalzo   Cytatad 3. no i to jest ten bol Jak to? Nie wiem ...   9.06.2003, 21:42:17
- - halfik   spenalzo: php jak tako samo nie ustawia SID przy l...   10.06.2003, 13:44:57
- - Pianandrill   Gdzieś się pojawił pomysł z sprawdzaniem IP - a co...   17.06.2003, 10:45:47
- - FiDO   Cytatna pewnym forum jest zachowywany login i jak...   17.06.2003, 11:55:49
- - halfik   Pianandrill: "TYM sposobem..." pisz prosze bez pol...   20.06.2003, 18:06:20
- - Pianandrill   Myslalem nad przechowywaniem id w cookie i sprawdz...   20.06.2003, 19:40:46
- - squid   Re: Zabezpieczenie formularzy   5.07.2003, 11:59:43
- - squid   CytatGdzieś się pojawił pomysł z sprawdzaniem IP -...   10.07.2003, 16:47:49
- - Omega   Niektórzy uważają że najprostsze metody są najleps...   17.07.2003, 09:17:03
- - halfik   CytatMyslalem nad przechowywaniem id w cookie i sp...   30.11.2003, 17:57:56
- - Sm0key   Co do sesji trzeba uważac na multi hosting -- poni...   16.08.2004, 14:46:33
- - Vengeance   Cytatstring session_save_path ( [string ścieżka]) ...   16.08.2004, 17:19:25
- - kwiateek   Cytat(Sm0key @ 2004-08-16 15:46:33)Co do sesj...   21.08.2004, 14:22:01
- - MrMag   proboje wlasnie zabezpieczyc formularz przed dodan...   23.08.2004, 00:53:59
- - AndyPSV   CytatJestem ciekawy Waszych doświadczeń i sposobów...   30.08.2004, 01:30:59
- - snaiper   mam dwa pytanka 1) na zajeciach facet nam powiedz...   1.06.2005, 12:08:01
- - Ociu   1. Nie zakodowane napewno jest niebezpiecznie trzy...   1.06.2005, 14:49:08
- - Vengeance   @snaiper: Taki scenariusz: Ktoś włamał się na serw...   1.06.2005, 16:28:33
- - bigZbig   Sesje powinny byc przechowywane w bazie danych, a ...   6.06.2005, 09:02:01
- - ActivePlayer   Cytat(DeyV @ 2003-06-05 18:41:44)Jeżeli dane ...   6.06.2005, 11:12:59
- - kysiu.pl   Cytat(MrMag @ 2004-08-22 23:53:59)proboje wla...   10.06.2005, 13:14:14


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 00:07