O manual parece sugerir que usar aspas em torno de números é suficiente para proteger da injeção de SQL.
De acordo com a seção 5.3.1. Diretrizes Gerais de Segurança do Manual de Referência do MySQL 5.1 :
Se um aplicativo gera uma consulta, como
SELECT * FROM table WHERE ID=234
quando um usuário insere o valor234
, o usuário pode inserir o valor234 OR 1=1
para fazer com que o aplicativo gere a consultaSELECT * FROM table WHERE ID=234 OR 1=1
. Como resultado, o servidor recupera todas as linhas da tabela. Isso expõe cada linha e causa carga excessiva do servidor. A maneira mais simples de se proteger desse tipo de ataque é usar aspas simples em volta das constantes numéricas:SELECT * FROM table WHERE ID='234'
. Se o usuário inserir informações extras, tudo se tornará parte da string. Em um contexto numérico, o MySQL converte automaticamente essa string em um número e retira dela quaisquer caracteres não numéricos à direita.
Isso significa que o usuário está protegido se inserir o valor 234' OR 1=1 #
? (ou seja, para gerar a consulta SELECT * FROM table WHERE ID='234' OR 1=1 #'
)