sql >> Database >  >> RDS >> Mysql

Hoe ziet de binnenkant van een voorbereide verklaring eruit?

Als je probeert te doen wat het klinkt alsof je probeert te doen... probeer dat dan niet te doen.

Dat is niet wat een voorbereide verklaring is (of dat is tenminste niet wat het zou moeten zijn).

Uw clientcode mag niet proberen waarden in de queryreeks te interpoleren om een ​​"voltooide" query te genereren die naar de server wordt gestuurd voor uitvoering. Dat is een recept voor rampen, om nog maar te zwijgen van een vals gevoel van veiligheid.

Voorbereide verklaringen leveren de verklaring met ? placeholders naar de server as-is, waar de server de instructie "voorbereidt" voor uitvoering... en dan stuurt de client de parameters naar de server ("binden" de parameters) voor uitvoering. Door dit te doen, zal de server nooit in de war raken over "welk deel de SQL is" en "welk deel de gegevens", waardoor sql-injectie onmogelijk wordt en het ontsnappen en opschonen van de gegevens overbodig wordt.

Als u niet rechtstreeks met de C-API communiceert, moet u de methoden in uw bibliotheek aanroepen die dezelfde functies aan u tonen.




  1. PDO mysql-transacties begrijpen

  2. PDO en sessies gebruiken om een ​​inlogformulier te maken

  3. Hoe maak je een veilig login-script in PHP en MySQL

  4. Een afbeelding invoegen in de postgresql-database