Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]FORMULARZ FILTROWANIE DANYCH
Forum PHP.pl > Forum > Przedszkole
grzesio
Czy ta filtracja jest wystarczająca ?


  1. $password= htmlspecialchars($password)
  2. $login= htmlspecialchars($login)
  3.  
  4.  
  5. $login=mysqli_real_escape_string($con, $login);
  6. $password=mysqli_real_escape_string($con, $password);
viking
Zależy np od zdefiniowanego kodowania znaków dla połączenia (tak, są takie ataki). Poza tym głupotą jest filtrowanie znaków z hasła i pewnie zapis jako tekst. Poczytaj też o bindowaniu.
nospor
Cytat
FORMULARZ FILTROWANIE DANYCH
Nie krzycz, nie ma takiej potrrzeby - naprawde.

Poza tym dobrze by bylo, byś napisał do czego ta "filtracja" bo pomijając to co napisał viking, to dodam np. ze wkladania do bazy htmlspecialchars jest totalnie zbędne i wręcz może czasami przeszkadzać. htmlspecial chars uzywa się do filtracji przed wyświetlaniem danych.

Poza tym jak viking już napisał - bindowanie rozwiąże większość twoich problemów jeśli chodzi o bazę.
dublinka
To sobie poczytaj..
https://websitebeaver.com/prepared-statemen...t-sql-injection
grzesio
Cytat(nospor @ 13.12.2019, 12:52:51 ) *
Nie krzycz, nie ma takiej potrrzeby - naprawde.

-Hej


- haha jeszcze nie ma potrzeby...... jeszcze NIE exclamation.gif!

załóżmy że jest to process REJESTRACJI UZYTKOWNIKA

używam:

Funkcji trim() która usuwa białe znaki (symbol nowego wiersza \n, powrotu karetki \r, tabulacji \t, znaki końca wiersza \0 oraz spacje)
znajdujące się przed tekstem oraz za tekstem....ale nie w środku


używam htmlspecialchars()
wtedy ZANCZNIKI HTML < > zamieniam na ich odpowiedniki języka HTML &lt; i &gt;

używam
"mysqli_real_escape_string()", która została specjalnie napisana,
aby chronić kod przed atakiem "SQL injection".

przepuszczam tylko dozwolone znaki .....
$not_in_list = "A-Z0-9a-z\s_-";



JEDNAK CHCIAŁBYM BYĆ INFORMOWANY o wszelkich niezgodnościach ATAKACH przy logowaniu:



Czy warto ZAPISAĆ PRÓBY ATAKU ?

1. if ((!isset($_POST['rejestracjaEmail'])) || (!isset($_POST['login']))) { ALERT OSTRZEZENIE.......

2. if (strlen($name) < 3) if (strlen($name) > 25) ALERT OSTRZEZENIE

3. Jeśli wykryję symbol nowego wiersza \n, powrotu karetki \r, tabulacji \t, znaki końca wiersza \0 oraz spacje)
znajdujące się przed tekstem oraz za tekstem wtedy - ALERT OSTRZEZENIE


4 jeżeli jest Sql injection ALERT OSTRZEZENIE

5. przepuszczam tylko dozwolone znaki .....
$not_in_list = "A-Z0-9a-z\s_-"; jeżeli znaki są niedozwolone - ALERT OSTRZEZENIE
(W tym usuwanie polskich,ruskich znaków diakrytycznych)


[php][/php]
nospor
Z lekka przekombinowales to wszystko. No i sluchaj co sie do ciebie mowi. Chyba po to przyszedles

Juz ci pisalem: htmlspecialchars nie do tego sluzy

mysqli_escape zastap bindowaniem

Skoro pozwalasz tylko na A-Z0-9a-z\s_- to po grzyba tak czy siak te wszystkie inne filtrowania? To jedno tutaj zalatwia wszystkie inne

No i po co ci te ostrzezenia? Ze ktos wpisal polska literke to chcesz byc powiadamiany? Co ci to da? Ze ktos wpisal wiecej niz 25 znkaow? Co ci to da? I to nie sa zadne proby ataku, ot, zwykly blad
grzesio
zastanawiam się jak wykryć próbę ataku i powiadomić ADMINA
dublinka
dowiesz sie jak Ci zrobią kuku bez bindowania danych.

Nigdy, przenigdy nie wyswietlaj informacji o jakimkolwiek bledzie. Chyba ze bedą to ew. najwazniejsze filtrowanie formularza.
nospor
Cytat
zastanawiam się jak wykryć próbę ataku i powiadomić ADMINA
Jak już ci pisałem: polskie znaki czy przekroczenie limitu znakow to nie proba ataku. Jak ktoś ci zacznie walić sqlinjection to wtedy masz probe ataku. Wiec jak bardzo chcesz o tym informowac to sprawdzaj czy ktos ci nie wali slowami kluczowymi bazy danych
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-2024 Invision Power Services, Inc.