sql >> Databasteknik >  >> RDS >> Mysql

bind_param() endast nödvändig för användarinmatade värden eller alla?

Tekniskt sett är du inte i riskzonen om du inte förbereder data som inte kommer från användarinmatning. Det rekommenderas dock starkt att du gör det av ett par anledningar:

  1. Om du glömmer att förbereda användarinmatningsdata någonstans, finns det en chans att den här användaren har injicerat något diverse i en datarad som du inte förväntade dig att någonsin bli användarinmatning.
  2. Det är bra att upprepa vad du gör för att hålla din server säker. Om du börjar blanda ihop det är det mycket mer sannolikt att du glömmer att förbereda data där det faktiskt behövs för att göra det.
  3. Att förbereda dina data är inte bara för att förhindra SQL-injektion från angripare. Det kommer också att förhindra vissa databasproblem om du av misstag skapar en bugg i din kod. Till exempel:

Någonstans i din kod har du ett loggsystem som lägger till en fellogg i din databas. Strängen skulle vara:


Denna sträng genereras av ditt skript. Därför förbereder du det inte. Ändå kommer citattecken i den här strängen att orsaka fel med din databas som kunde ha förhindrats om du förberedde den ändå.



  1. Clustered och Non Clustered Index:7 topppoäng förklarade

  2. Hur utför jag en GROUP BY på en aliasad kolumn i MS-SQL Server?

  3. Hur man skapar en PDF-rapport med PL/SQL

  4. Slår ihop två rader till en samtidigt som null-värden ersätts