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

Kiedy uciekam od wszystkich danych wejściowych, czasami pozostawia ukośniki (\) w ciągu i wstawia go do bazy danych. Dlaczego tak się dzieje i jak mogę to rozwiązać?

Masz rację.
Magiczne cudzysłowy nie mają nic wspólnego z sql i nie powinny być z nim połączone.
Ponieważ magiczne cudzysłowy to problem dotyczący całej witryny, a ucieczka z sql jest problemem związanym tylko z sql.

Dlatego wymagają innego leczenia i nigdy nie powinny być używane w połączeniu.

Musisz bezwarunkowo pozbyć się magicznych cudzysłowów, ponieważ psują one nie tylko SQL, ale każdą manipulację danymi na Twojej stronie.

Tak więc, rozsądnie byłoby umieścić trochę kodu z ukośnikami w dowolnym pliku startowym, który ma być uruchamiany przy każdym wywołaniu skryptu. Kod, który można znaleźć w wielu implementacjach takiego kodu, wystarczy wyszukać w Google funkcję 'stripslashes_deep'.

Byłoby mądrze mieć ten kod zawsze uruchamiany (oczywiście pod warunkiem sprawdzania get_magic_quotes_gpc()) pomimo aktualnego stanu magicznych cudzysłowów, tak ze względu na kompatybilność.

Istnieje jednak inna możliwość ich wyłączenia:spróbuj utworzyć plik php.ini w katalogu głównym aplikacji.

Jednak w twoim kodzie jest poważny błąd. W rzeczywistości niczego nie chroni.
Unikasz $memberid i $postid ale nie cytuj ich! . Tak więc w ogóle nie ma ochrony. Tylko dlatego, że ucieczka działa tylko w połączeniu z cytowaniem.

Proszę pamiętać:

Ucieczka nie jest synonimem bezpieczeństwa!

Samotna ucieczka nic nie pomoże. Istnieje cały zestaw zasad, których należy przestrzegać.

Niedawno napisałem przyzwoite wyjaśnienie, więc nie powtarzałbym się:Zastąpienie funkcji mysql_* PDO i przygotowanymi instrukcjami



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można połączyć się ze zdalnym serwerem mysql przy użyciu unixodbc, libmyodbc

  2. Połącz się ze zdalną bazą danych MySQL

  3. Używanie rekurencji do budowania nawigacji

  4. mysqli multi_query, po którym następuje zapytanie

  5. Wstawianie danych do wielu tabel PHP MySQL