Utformningen av mysql_query
funktionen är sådan att du måste vara försiktig så att du undslipper varje bit av data som du injicerar i den, och om du missar en enda kan hela din applikation förstöras av en automatiskt verktyg för SQL-sårbarhetsexploatering
.
Båda mysqli
och PDO stöder platshållare som krävs för att säkerställa att dina frågor är säkra från SQL-injektionsbuggar. Anropar mysql_real_escape_string
på allt är inte bara tråkigt, utan felbenäget, och det är där problemen uppstår.
mysql
funktioner är en produkt av PHPs mycket tidiga dagar och är betydligt mer begränsade än de nya objektorienterade funktionerna som erbjuds av både mysqli
som tillval, eller PDO genom design.
Det finns ett antal mycket goda skäl att använda ett av dessa två nya gränssnitt, men det viktigaste är att mysql_query
funktion är helt enkelt för farlig för att använda i produktionskod. Med den kommer du alltid att vara ett misstag från några mycket allvarliga problem.
Det finns en anledning till att rippar av databaser fulla av lösenord och kreditkortsnummer fortsätter att dyka upp. Att ha en uppenbar SQL-injektionspunkt gör det nästan för lätt att helt ta över en webbplats.