Validação minunciosa PHP
Bom dia,
Estou usando a classe GUMP para fazer validações server-side nos campos de formulários, depois de algumas extensões ela faz tudo que eu preciso praticamente, porém, a limpeza natural da classe, permite passagem de comandos, então acrescentei o seguinte método a classe:
<?php
protected function block_mysql_keywords($field, $input, $param = null) {
if (!isset($input[$field]) || empty($input[$field])) {
return;
}
$bloqued_tags = 'break,checkpoint,commit,dbcc,deny,opendata-source,openquery,shutdown,while,xp_,openrowset,char,nchar,varchar,nvarchar,alter,begin,cast,create,cursor,declare,delete,drop,end,exec,execute,fetch,insert,kill,open,select,sys,sysobjects,syscolumns,table,update';
$tags = explode(',', $bloqued_tags);
$error = 0;
foreach ($tags as $row) {
if (preg_match('/' . $row . '/i', $input[$field])) {
$error += 1;
} else {
//
}
}
if($error > 0){
return array(
'field' => $field,
'value' => $input[$field],
'rule' => __FUNCTION__,
'param' => $param,
);
}
}
Tudo o que eu pude testar de comando não chega mais nas conexões com o banco de dados.
A dúvida é se isso está bom e se alguém tem alguma dica pra melhorar essa validação contra sql injection ?
PS: Essa é validação principalmente para o login, nessa parte os dados já passaram pela sanitize da classe, validação de caracteres especiais e remoção de tags html e urls contra XSS.
Valeu Discussão (0)
Carregando comentários...