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

Dlaczego używanie przygotowanej instrukcji mysql jest bezpieczniejsze niż używanie typowych funkcji ucieczki?

Ważną kwestią, której moim zdaniem brakuje tutaj, jest to, że w przypadku bazy danych, która obsługuje zapytania parametryczne, nie trzeba się martwić o „ucieczkę”. Silnik bazy danych nie łączy powiązanych zmiennych w instrukcję SQL, a następnie analizuje całość; Powiązane zmienne są trzymane oddzielnie i nigdy nie są analizowane jako ogólna instrukcja SQL.

Stąd bierze się bezpieczeństwo i szybkość. Silnik bazy danych wie, że symbol zastępczy zawiera tylko dane, więc nigdy nie jest analizowany jako pełna instrukcja SQL. Przyspieszenie pojawia się, gdy raz przygotowujesz instrukcję, a następnie wykonujesz ją wiele razy; kanonicznym przykładem jest wstawianie wielu rekordów do tej samej tabeli. W takim przypadku silnik bazy danych musi przeanalizować, zoptymalizować itp. tylko raz.

Teraz jeden problem dotyczy bibliotek abstrakcji bazy danych. Czasami udają, że po prostu wstawiają powiązane zmienne do instrukcji SQL z odpowiednim escapem. Mimo to jest to lepsze niż robienie tego samemu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak MySQL przetwarza ORDER BY i LIMIT w zapytaniu?

  2. Zarządzanie kontami użytkowników, role, uprawnienia, uwierzytelnianie PHP i MySQL - Część 3

  3. Łatwy sposób na eksportowanie tabeli SQL bez dostępu do serwera lub phpMyADMIN

  4. Jak określić ograniczenie unikatowe dla wielu kolumn w MySQL?

  5. Błąd MySQL::'Odmowa dostępu dla użytkownika 'root'@'localhost'