Zabezpiecz swój kod PHP

  • Niezbędne jest zapewnienie bezpiecznych danych od użytkowników (formularze i adresy URL itp.) Oprócz serwera systemu operacyjnego i serwera http, głównie z powodu ataku internetowego.
  • Istnieją 3 kategorie do zabezpieczenia kodu php:

Sprawdzanie poprawności użytkowników danych

Gdy witryna oferuje formularze umożliwiające użytkownikom przechwytywanie i wysyłanie treści, nie jest to wystarczające do wskazania formatu wpisów (adres e-mail, numer telefonu, ilość produktów). Serwer również powinien być monitorowany (np. PHP), jeśli dane są zgodnie z naszymi oczekiwaniami. Biorąc pod uwagę liczby całkowite, przekonwertuj wszystkie dane wysłane przez użytkownika:

Sprawdź poprawność danych z adresu URL lub formularzy

Prawie wszystkie otrzymane dane pochodzą z adresu URL lub formularzy skonfigurowanych przez webmastera. Prawie wszystkie parametry wyświetlania adresu URL określające jak poniżej:

/index.php?rub=25

Ten parametr nie powinien być jednak modyfikowany. Ale jest to możliwe jak poniżej:

 /index.php?rub=0 /index.php?rub= /index.php?rub=aaaaAAAAAaaaa /index.php?rub=1+or+1 
  • Ważne jest, aby sprawdzić, czy format otrzymany za pośrednictwem adresu URL lub formularza jest oczekiwany niezależnie od rodzaju danych.
  • Możesz użyć funkcji filter_input (), aby zweryfikować to samo.
  • Na przykład, jeśli otrzymałeś wiadomość e-mail od użytkownika z posta formatu z nazwą pola jako e-mail. Możesz odzyskać to przez:

 $ email = filter_input (INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); if ($ email) {// Wpis adresu e-mail jest rzeczywiście formatem adresu poczty} 

Ta funkcja może filtrować wiele rzeczy: adres IP, adres URL itp. Mogą wystąpić modyfikacje, takie jak łańcuch kodowania, przed wysłaniem przez URL jako proces przez htmlentities ().

  • Kilka filtrów można łączyć za pomocą „|” .
  • Aby zweryfikować adres IP tylko w formacie Ipv4:

$ ip = filter_input (INPUT_GET, 'ip', FILTER_VALIDATE_IP | FILTER_FLAG_IPV4);

Kliknij następujący link dla filtrów:

//www.php.net/filter

Pomiń wyświetlaną zawartość adresu URL

Gdy treść wprowadzona przez użytkownika jest wyświetlana na ekranie, zawiera kod HTML lub JavaScript, który jednak wymaga obowiązkowej ochrony.

Jeśli treść ma być wyświetlana w html: musisz HTMLencode ustawić, aby przekonwertować wszystkie znaki w równoważnych obiektach HTML. Poniżej znajduje się funkcja php do automatyzacji tego procesu:

echo htmlentities ($ _ REQUEST ['content']);

Jeśli treść powinna być wyświetlana w adresie URL: musisz urlencode treści.

PHP ma dwie funkcje do wykonania tego kodowania: urlencode () i rawurlencode (). Różnica między tymi dwiema funkcjami polega na kodowaniu obszaru, który w pierwszej funkcji daje i zapewnia% 20 i „+” w drugiej.

 echo '//www.website?valeur='.urlencode($_REQUEST['value']); 

Jeśli zawartość powinna być przechowywana w bazie danych: konieczne jest uniknięcie wszystkich znaków o określonej roli w używanym serwerze bazy danych. Dla PHP i MySQL, funkcja mysql_escape_string () sprawia, że ​​wszystkie potencjalnie szkodliwe znaki w łańcuchu są przekazywane jako parametr.

 $ query = 'SELECT id FROM matable WHERE user = "'. mysql_escape_string ($ _ REQUEST ['użytkownik']). '"'; 

Zauważ, że serwer jest skonfigurowany z opcją PHP magic_quotes, dane przesyłane przez użytkowników są automatycznie chronione odwrotnymi ukośnikami (odwrotny ukośnik). Zatem przed ochroną mysql_escape_string powinieneś „cofnąć” tę podstawową ochronę:

 $ query = 'SELECT id FROM mytable WHERE user = "'. stripslashes (mysql_escape_string ($ _ REQUEST ['użytkownik'])). '"'; 
Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki