sql >> Database teknologi >  >> RDS >> Mysql

bind_param() kun nødvendig på brugerinputtede værdier eller alle?

Teknisk set er du ikke i fare, hvis du ikke forbereder data, der ikke kommer fra brugerinput. Det anbefales dog kraftigt at gøre det af et par grunde:

  1. Hvis du glemmer at forberede brugerinputdata et eller andet sted, er der en chance for, at denne bruger har injiceret noget forskelligt i en datarække, som du aldrig forventede at blive brugerinput.
  2. Det er en god praksis at gentage, hvad du gør for at holde din server sikker. Hvis du begynder at blande det sammen, er der meget større sandsynlighed for, at du glemmer at forberede data, hvor det faktisk er nødvendigt for at gøre det.
  3. Forberedelse af dine data er ikke kun for at forhindre SQL-injektion fra angribere. Det vil også forhindre nogle databaseproblemer, hvis du ved et uheld opretter en fejl i din kode. For eksempel:

Et eller andet sted i din kode har du et logsystem, der tilføjer en fejllog til din database. Strengen ville være:


Denne streng er genereret af dit script. Derfor forbereder du det ikke. Alligevel vil anførselstegnene i denne streng forårsage fejl med din database, som kunne have været forhindret, hvis du alligevel forberedte den.



  1. Hvad er MySQL VARCHAR max størrelsen?

  2. execSQL() med OPDATERING opdateres ikke

  3. Begrænsning af samtidige brugersessioner for et specifikt login i SQL Server

  4. Opførsel af NOT LIKE med NULL-værdier