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

Erlang Mysql:Sådan forhindrer du SQL-injektioner

Dette svar afhænger af den driver du bruger.

Erlang ODBC har en funktion param_query, der binder et sæt parametre til forespørgslen, og den kan også undslippe alle SQL-specialtegn.

erlang-mysql-driver har udarbejdet udtalelser:

%% Register a prepared statement
mysql:prepare(update_developer_country,
              <<"UPDATE developer SET country=? where name like ?">>),

%% Execute the prepared statement
mysql:execute(p1, update_developer_country, [<<"Sweden">>,<<"%Wiger">>]),
 

(kode fra Yarivs blog )

Som en sidste udvej kan du altid undslippe tegnene

NUL (0x00) --> \0 BS (0x08) --> \b TAB (0x09) --> \t LF (0x0a) --> \n CR (0x0d) --> \r SUB (0x1a) --> \z " (0x22) --> \" % (0x25) --> \% ' (0x27) --> \' \ (0x5c) --> \\ _ (0x5f) --> \_


  1. Hvorfor forbedrer STRAIGHT_JOIN denne forespørgsel så drastisk, og hvad betyder det, når den er skrevet efter søgeordet SELECT?

  2. roterende mysql langsom forespørgselslog

  3. Hvordan indsætter man en ny række i databasen med AUTO_INCREMENT-kolonnen uden at angive kolonnenavne?

  4. Fatal fejl under opkald til MySQL-lagret funktion fra PHP ved hjælp af MySQLi