Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Eu tenho que me proteger contra injeção de SQL se eu usar uma lista suspensa?

Sim, você precisa se proteger contra isso.


Deixe-me mostrar por que, usando o console do desenvolvedor do Firefox:



Se você não limpar esses dados, seu banco de dados será destruído. (Isso pode não ser uma instrução SQL totalmente válida, mas espero ter entendido meu ponto de vista.)

Só porque você limitou as opções disponíveis em sua lista suspensa não significa você limitou os dados que posso enviar ao seu servidor.

Se você tentou restringir ainda mais esse comportamento de uso em sua página, minhas opções incluem desabilitar esse comportamento ou apenas escrever uma solicitação HTTP personalizada para seu servidor que imita esse envio de formulário de qualquer maneira. Existe uma ferramenta chamada curl usado exatamente para isso, e eu acho o comando para enviar esta injeção de SQL de qualquer maneira seria algo assim:
curl --data "size=%27%29%3B%20DROP%20TABLE%20*%3B%20--"  http://www.example.com/profile/save

(Isso pode não ser um comando curl totalmente válido, mas, novamente, espero ter entendido meu ponto de vista.)

Então, vou reiterar:

NUNCA confie na entrada do usuário. SEMPRE proteja-se.


Não assuma que nenhuma entrada do usuário é segura. É potencialmente inseguro, mesmo que chegue por algum meio que não seja um formulário. Nada disso é confiável o suficiente para deixar de se proteger da injeção de SQL.