Zabezpieczenie formularza do oceny |
Zabezpieczenie formularza do oceny |
24.05.2013, 14:45:16
Post
#1
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 14.03.2011 Ostrzeżenie: (0%) |
Cześć
Moim celem jest stworzenie bezpiecznego formularza zbierającego dane osobowe. Zależy mi bardzo na bezpieczeństwie, ponieważ nie chcę, aby wyciekły nr PESEL, nr dowodu osobistego i inne dane. Stronę buduję prawie całkowicie w HTMLu - pomyślałem bowiem, że skoro potrzebuję jedynie formularza otoczonego estetycznymi obrazkami i kilkoma zdaniami wprowadzenia, ze względów bezpieczeństwa nie ma sensu zaprzęgania jakiegoś CMSa. Wysyłam więc do przeglądarki nieco obrazków i statycznych tekstów za pomocą tagów HTML. Pośród tego wszystkiego zrobiłem jeden formularz w PHP, w którym stosuję kilka pół testowych oraz pól typu select (rozwijalnych list). Następny skrypt odbiera te formularze (metodą POST) i: 1. Filtruje:
gdzie metoda filtrujDane wygląda następująco:
Czyli zmienna poddawana jest najpierw funkcji htmlentities a później strip_tags. 2. Następnie dane te porównywane są do wzorca jakiego się spodziewam. W przypadku pól tekstowych:
czyli jeśli zmienna $imie pobrana z POST jest alfanumeryczna, wtedy jeszcze raz pobieram ją z POST i umieszczam w tablicy $clean. Będą w niej znajdować się czyste dane. W przypadku pól select sprawdzam tak:
Czyli jeśli otrzymam wartość 1, 2 lub 3 - jeszcze raz pobieram POSTem i ładuję do tablicy $clean. Muszę teraz zapisać dane w bazie. W tym celu sprawdzam, czy długość zmiennych jest większa od 0 (czyli czy wypełniono wszystkie pola obowiązkowe) i formuje z tego instrukcję INSERT. Zanim to jednak nastąpi, tuż przed umieszczeniem w bazie traktują je funkcją mysql_real_escape_string
aby dodać znaki ucieczki do niebezpiecznych znaków. Dodatkowo nie wyświetlam żadnych zmiennych przez echo, jedynie suche zdanie "Dziękujemy za rejestrację w naszym serwisie" (zdanie to jest w pełni statyczne). Aha. Zrobiłem tak, że strona internetowa wrzuca dane do bazy tymczasowej i tylko do niej ma dostęp. Moderator uruchamiając aplikację do zarządzania danymi zostanie poinformowany o nowych klientach i jeśli wzrokowo będzie z nimi wszystko w porządku, jednym przyciskiem przeniesie je do bazy produkcyjnej. Moderator nie jest niestety informatykiem. Co sądzicie o takich zabezpieczeniach? Ten post edytował lol75 24.05.2013, 15:01:13 |
|
|
24.05.2013, 15:15:53
Post
#2
|
|
Grupa: Zarejestrowani Postów: 82 Pomógł: 1 Dołączył: 23.02.2012 Ostrzeżenie: (0%) |
wykorzystaj SSL
|
|
|
24.05.2013, 17:03:35
Post
#3
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 14.03.2011 Ostrzeżenie: (0%) |
Dzięki. Rzeczywiście tak zrobię.
Tu jeszcze jest jedna sprawa, którą chciałbym przedyskutować. Zamierzam umieścić stronę i aplikację na serwerze home.pl lub nazwa.pl. Jak myślicie - to duże ryzyko? Nie mam innego wyjścia. |
|
|
24.05.2013, 17:05:32
Post
#4
|
|
Grupa: Zarejestrowani Postów: 702 Pomógł: 65 Dołączył: 16.03.2009 Ostrzeżenie: (0%) |
bibliotekę mysql_* zamień na PDO i binduj dane . Do tego zabezpiecz formularz za pomocą CSRF
-------------------- Nie udzielam pomocy poprzez PW
|
|
|
24.05.2013, 20:09:52
Post
#5
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 19.11.2012 Ostrzeżenie: (0%) |
Nie za bardzo rozumiem, co mają wspólnego te funkcje filtrujące dane z zabezpieczeniem przed wypłynięciem danych ( z formularza ? , bazy danych ? ).
Nie lepiej użyć zamiast funkcji filtrujących wyrażenia regularne ? Dla numeru PESEL, NIP, REGON możesz użyć dodatkowa funkcje weryfikujące cyfre kontrolną, a do numeru dowodu regex (2 znaki 7 cyfr, lub 3 znaki 6 cyfr ). |
|
|
24.05.2013, 21:22:29
Post
#6
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 3 Dołączył: 21.05.2013 Ostrzeżenie: (10%) |
co do PESEL:
- Algorytm sprawdzający MUSI uwzględniać datę urodzenia. Dzięki temu unikasz błędu "44" sumy kontrolnej - Algorytm POWINIEN sprawdzać płeć Popularne błędy: - Data urodzenia nie taka jak w numerze - zła suma kontrolna - data poza zasięgiem np. 31 listopada - płeć inna niż w numerze - powtórzenie numeru Dodam ze sa inni cwani Trzeba uwzglednic rok przestepny w dacie czy tam w tworzeniu peselu. |
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 04:06 |