Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Odpytywanie bazy danych PHP/SQL o dobre praktyki i bezpieczeństwo

Odpowiedź Javiera, która zawiera link owasp, to dobry początek.

Jest jeszcze kilka rzeczy, które możesz zrobić więcej:

  1. Jeśli chodzi o ataki typu SQL injection, możesz napisać funkcję, która usunie typowe instrukcje SQL z danych wejściowych, takie jak „DROP” lub „DELETE * WHERE”, w ten sposób:

    *$sqlarray =tablica( " UPUŚĆ ","lub 1=1","Wybierz sumę","WYBIERZ * Z","wybierz hosta","utwórz tabelę","OD użytkowników","użytkownicy GDZIE");*

    Następnie napisz funkcję, która sprawdzi dane wejściowe z tą tablicą. Upewnij się, że żadne elementy wewnątrz $sqlarray nie będą typowymi danymi wejściowymi użytkowników. (Nie zapomnij użyć w tym przypadku strtolower, dzięki Lou).

  2. Nie jestem pewien, czy memcache działa z PHP 4, ale możesz wprowadzić pewną ochronę przed spamem za pomocą memcache, zezwalając tylko na określony zdalny dostęp IP do strony process.php X razy w okresie Y.

  3. Przywileje są ważne. Jeśli potrzebujesz tylko uprawnień do wstawiania (powiedzmy, przetwarzania zamówienia), powinieneś zalogować się do bazy danych na stronie procesu zamówienia z użytkownikiem, który ma tylko uprawnienia do wstawiania i być może wybierania. Oznacza to, że nawet jeśli wstrzyknięto SQL, mogliby wykonywać tylko zapytania INSERT / SELECT, a nie usuwać ani restrukturyzować.

  4. Umieść ważne pliki przetwarzania php w katalogu, takim jak /include. Następnie zabroń wszystkim adresom IP dostępu do tego katalogu /include.

  5. Umieść solony MD5 z agentem użytkownika + zdalnym ipem + swoim statusem w sesji użytkownika i spraw, aby sprawdzał przy każdym wczytaniu strony, czy prawidłowy MD5 znajduje się w jego pliku cookie.

  6. Nie zezwalaj na niektóre nagłówki (http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ) . Nie zezwalaj na PUT (jeśli nie potrzebujesz przesyłania plików)/TRACE/CONNECT/DELETE nagłówki.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CodeIgniter - Pogrupuj według zamówienia, nie działając zgodnie z oczekiwaniami

  2. Zapisz pliki CSV w bazie danych mysql

  3. Krótszy, niepowtarzalny kod alfanumeryczny niż UUID w MySQL

  4. Zapytanie było puste, błąd PHP

  5. Uzyskaj całkowitą liczbę przepracowanych godzin dziennie mysql