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

Dane wejściowe użytkownika, wyczyść i odkaż przed wysłaniem do db

Po pierwsze, tekst powinien być logiczny i czysty:

trim() -- OK
htmlentities($comment, ENT_NOQUOTES)  -- No; do later
mysqli_real_escape_string()  -- Yes; required by API
nl2br()  -- No; see below

Logika stojąca za tymi zaleceniami:Dane w bazie danych powinny być zwykłymi danymi. Nie elementy html, nie tagi br. Ale musisz wykonać ciąg znaków escape, aby przekazać dane z PHP do MySQL; ucieczki nie zostaną zapisane.

Ale... To tylko środkowy krok. Skąd pochodzą dane? Starsze wersje PHP starają się "chronić" dodawane kody ucieczki i inne śmieci, które działają dobrze dla HTML, ale psują MySQL. Wyłącz taką magiczną ucieczkę i uzyskaj surowe dane.

Dokąd trafiają dane? Prawdopodobnie HTML? Po SELECTing dane z powrotem z tabeli, następnie najpierw wykonaj htmlentities() i (opcjonalnie) nl2br();

Uwaga, jeśli spodziewasz się zachować takie rzeczy jak <I> (kursywą) prosisz o kłopoty – duże kłopoty. Wszystko, co musi zrobić haker, to <script> ... aby wstrzyknąć wszelkiego rodzaju złośliwości na twoją stronę internetową i prawdopodobnie na cały system.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL IFNULL N/A zwraca element nie można znaleźć w kolekcji Błąd

  2. Jak ustawić domyślną wartość typu danych MySQL enum na „Nie”?

  3. Python MySQLdb / MySQL INSERT IGNORE &Checking ifignored

  4. Jak sprawdzić, czy data jest pomiędzy date1 a date2 za pomocą mysql?

  5. Jak pobrać dane z bazy danych, aby wyświetlić stronę w laravelu?