sql >> Database >  >> RDS >> Mysql

bind_param() alleen nodig voor door de gebruiker ingevoerde waarden of allemaal?

Technisch gezien loopt u geen risico als u geen gegevens voorbereidt die niet afkomstig zijn van gebruikersinvoer. Het wordt echter sterk aangeraden om dit om een ​​aantal redenen te doen:

  1. Als u ergens gebruikersinvoergegevens vergeet voor te bereiden, bestaat de kans dat deze gebruiker iets anders in een gegevensrij heeft geïnjecteerd waarvan u niet had verwacht dat dit ooit gebruikersinvoer zou zijn.
  2. Het is een goede gewoonte om te herhalen wat u doet om uw server veilig te houden. Als je het door elkaar haalt, is de kans groter dat je vergeet om gegevens voor te bereiden waar dat echt nodig is.
  3. Het voorbereiden van uw gegevens is niet alleen bedoeld om SQL-injectie door aanvallers te voorkomen. Het voorkomt ook enkele databaseproblemen voor het geval u per ongeluk een bug in uw code maakt. Bijvoorbeeld:

Ergens in je code heb je een logsysteem dat een errorlog aan je database toevoegt. De string zou zijn:


Deze string wordt gegenereerd door je script. Daarom bereid je het niet voor. Toch zullen de aanhalingstekens in deze string fouten veroorzaken in uw database die voorkomen hadden kunnen worden als u deze toch had voorbereid.



  1. Hoe tabelrijen uit de db (php) te echoën

  2. Waarom retourneert deze sql-query geen resultaten waarin getallen met drijvende komma worden vergeleken?

  3. Databasecontrolepunten in SQL Server

  4. SQL CASE-instructie