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

bind_param() konieczne tylko w przypadku wartości wprowadzonych przez użytkownika czy wszystkich?

Technicznie rzecz biorąc, nie jesteś narażony na ryzyko, jeśli nie przygotujesz danych, które nie pochodzą z danych wejściowych użytkownika. Zaleca się jednak to zrobić z kilku powodów:

  1. Jeśli zapomnisz gdzieś przygotować jakiekolwiek dane wejściowe użytkownika, istnieje szansa, że ​​ten użytkownik wstrzyknął coś innego do wiersza danych, co do którego nigdy się nie spodziewałeś.
  2. Dobrą praktyką jest powtarzanie tego, co robisz, aby zapewnić bezpieczeństwo serwera. Jeśli zaczniesz to mieszać, znacznie bardziej prawdopodobne jest, że zapomnisz o przygotowywaniu danych tam, gdzie jest to rzeczywiście potrzebne.
  3. Przygotowywanie danych to nie tylko zapobieganie wstrzykiwaniu kodu SQL przez atakujących. Zapobiegnie to również niektórym problemom z bazą danych w przypadku, gdy przypadkowo utworzysz błąd w swoim kodzie. Na przykład:

Gdzieś w swoim kodzie masz system dzienników, który dodaje dziennik błędów do bazy danych. Ciąg będzie wyglądał następująco:


Ten ciąg jest generowany przez Twój skrypt. Dlatego nie przygotowujesz tego. Jednak cudzysłowy wewnątrz tego ciągu spowodują błędy w Twojej bazie danych, którym można by zapobiec, gdyby i tak ją przygotowałeś.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie tabeli mysql z jawnym domyślnym zestawem znaków, co jeśli tego nie zrobię?

  2. php:najszybszy sposób na wygenerowanie 5-cyfrowego numeru, który nie jest jeszcze w kolumnie bazy danych MySQL (z unikalnym atrybutem)

  3. '𠂉' Nie jest prawidłowym znakiem Unicode, ale w zestawie znaków Unicode?

  4. Recenzja produktu — gwiezdna naprawa bazy danych MySQL

  5. ProgrammingError:obiekty SQLite utworzone w wątku mogą być używane tylko w tym samym wątku