Jump to content

Recommended Posts

Posted

Boa tarde pessoal,

Gostava de fazer esta pergunta, Como posso combater os ataques de sql injection?

Obrigado pela atenção,

Fábio Santos

Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!

Posted

Aconselho a usar PDO. Estas funções não são 100% seguras

Erm.. é certo que fui vago; mas tu também podias elaborar x)

Tive agora no SO e aqui explica o "porque"; No entanto.. também existe um mysqli::prepare() portanto... qual é a grande diferença?

(é uma duvida legal, só agora é que li sobre PDO - ando a fazer a minha transação para OOP aos poucos)

If all Else fails, use Else If;

Posted
No entanto.. também existe um mysqli::prepare() portanto... qual é a grande diferença?

Desde que uses prepared statements, como o Rui Carlos disse lá atrás, é a mesma coisa; a única diferença é que PDO é multi-motor, enquanto do MySQLi é só para esse motor. Se tiveres a certeza absoluta que o motor de DB não vai mudar ao longo do ciclo de vida do projecto, podes usar a extensão específica do motor; senão, usa PDO, que é mais fácil mudar de motor mais tarde.

  • Vote 1

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Posted

Desde que uses prepared statements, como o Rui Carlos disse lá atrás, é a mesma coisa; a única diferença é que PDO é multi-motor, enquanto do MySQLi é só para esse motor. Se tiveres a certeza absoluta que o motor de DB não vai mudar ao longo do ciclo de vida do projecto, podes usar a extensão específica do motor; senão, usa PDO, que é mais fácil mudar de motor mais tarde.

Ah! Por momentos temi pela minha protecção contra SQL Injection (se bem que ainda nao actualizei para o prepared statements)

Obrigado 🙂

If all Else fails, use Else If;

Posted (edited)

@mjamado

O uso do cast (int, float, etc... mas não string (n sei se há mais nesta categoria)) tb torna o dado completamente seguro para meter na DB.

Claro que estes que indiquei é limitado a números

Edited by brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Posted
Claro que estes que indiquei é limitado a números

Generalidades vs. especificidades.

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Posted (edited)

Para quem precisar :

return (is_int($string) && $string >= 0) || ctype_digit($string);

Pq a parte:

$string >= 0

?

De qq modo, eu n uso isso.

Se se trata de dados que eu estou à espera que seja exclusivamente números inteiros uso diretamente o cast.

Edited by brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Posted

Pq a parte:

$string >= 0

?

De qq modo, eu n uso isso.

Se se trata de dados que eu estou à espera que seja exclusivamente números inteiros uso diretamente o cast.

Essa parte ficou a mais, não reparei. Uso-a porque é bastante comum usar essa condição para verificar ID's.

Quando trabalhas com comandos que são inseridos pelo utilizador é melhor filtrar bem o input e condicionar o uso da aplicação àquilo que é o seu propósito, caso contrário torna-se mais fácil sofrer um ataque no site.

Posted

Se o input for inválido (basta um parametro invalído), se possível, a aplicação nem devia chegar a efectuar a ligação à base de dados e devolver logo o erro, tentando efectuar o minimo de instruções, incluir o mínimo de ficheiros e consumir o minimo de recursos do sistema... mas nem sempre é possivel...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.