Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola pessoal,
Vejo diversas pessoas utilizando funções para evitar "problemas" de usuários mau intencionados, bem como aqueles sem nenhum intenção.
Estas funções são claras para mim, entendo muitas delas, mas o que eu queria saber é quais o pessoal mais utiliza e as melhores "ideias" para as seguintes situações:
Obs. Algo que seja simples porém seguro nos formulários do dia dia também é importante.
CADASTRO EM FORMULÁRIOS (POST) NO GERAL
ACESSO AO PAINEL DE CONTROLE POR LOGIN E SENHA
ENVIO DE INFORMAÇÕES PARA O BANCO DE DADOS PARA CONSULTA
Algumas funções que já vi, por favor me informem se tem mais e como podemos utilizar:
htmlspecialchars(), evitar injetar tags HTML ou Java Scrpit em sua página
int(), input que os valores precisam ser números, essa é um saída.
trim(), evita inserção de dados no query do mysql...
retorna uma string com os espaçoes retirados do ínicio e do final de str.
preg_replace(), evitar adicionar informações como "SELECT", "INSERT" e demais no formulário que possa evitar tal "invasão em sem mysql"
String ou um array com strings para pesquisar e substituir
============================
strip_tags(), esta função tenta retornar uma string retirando todas as tags HTML e PHP de str.
fgetss(), tenta retirar qualquer tag HTML ou PHP do texto que ele lê.
Obs. Para mim são iguais
===========================
get_magic_quotes_gpc(), utilizada para verificar se houve mudança nas informações recebidas da original.
addslashes(), retorna uma string com barras invertidas antes de caracteres que precisam ser escapados para serem escapados em query a banco de dados, etc. Estes caracteres são aspas simples ('), aspas duplas ("), barra invertida (\) e NUL (o byte NULL).
Agora vamos ao exemplo:
/ FUNÇÃO PARA EVITAR ENVIO DE INFORMAÇÕES MAL INTENCIONADAS /
function anti_injection($obj){
$obj = preg_replace("/(from|alter table|select|insert|delete|update|where|drop table|show tables|#|*|--|\\)/i", "", $obj);
$obj = trim($obj);
$obj = strip_tags($obj);
if(!get_magic_quotes_gpc()) {
$obj = addslashes($obj);
return $obj;
}
}>
15 horas atrás, marsolim disse:
já viu as prepared statements do mysqli e do pdo? dá uma estudada nessa parada aí que é muito eficiente na proteção. tem como o php tipo preparar a sql pra enviar de forma segura.
Marsolim,
Obrigado, eu já estava estudando esses elementos e o PDO, utilizo ele no desenvolvimento de alguns sites que faço...
Mas fora isso, essas funções que coloquei e outras que posso desconhecer, o que queria saber é se utilizam para outras coisas, por exemplo, um simples formulário de cliente, há alguma preocupação ou necessidade de utilizar o trim()?
exemplo de PDO que faço em minhas consultas:
public function getSelectedEquip($admin_id) {
try {
$stmt = $this->conn->prepare("SELECT e.admin_id, e.first_name, e.last_name, e.email,
e.password, e.gender_id, g.name AS gender_name,
e.birth_date, e.last_login, e.telephone, e.photo,
e.lang, e.nivel, e.enabled
FROM tbl_admins e
INNER JOIN tbl_gender g ON g.genders_id = e.gender_id
WHERE e.admin_id = :_admin_id");
$stmt->bindParam(':_admin_id', $admin_id, PDO::PARAM_INT);
$stmt->execute();
if ($stmt->rowCount() > 0) {
return $stmt->fetch();
}
}
catch(PDOExeption $e) {
http_response_code(500);
sql_error("MYSQL ERROR: " . $e->getMessage() . "<br/>");
}
}É um assunto que renderia muita discussão, não existe um proteção 100% segura, o que se pode fazer é evitar ao máximo deixar brechas, validar dados tanto no front-end quanto no back-end, dê uma lida neste artigo, ele aborda alguns pontos principais em segurança em aplicações web: https://imasters.com.br/infra/seguranca/seguranca-em-aplicacoes-web-com-php/?trace=1519021197&source=single
dê uma olhada nisso também, acho que pode ajudar e eu não preciso escrever muita coisa https://pt.stackoverflow.com/questions/88683/prepared-statements-com-mysqli-dispensa-validação-da-entrada-de-dados
>
1 hora atrás, Osmar L Lima disse:
É um assunto que renderia muita discussão, não existe um proteção 100% segura, o que se pode fazer é evitar ao máximo deixar brechas, validar dados tanto no front-end quanto no back-end, dê uma lida neste artigo, ele aborda alguns pontos principais em segurança em aplicações web: https://imasters.com.br/infra/seguranca/seguranca-em-aplicacoes-web-com-php/?trace=1519021197&source=single
Fantástico,
Os dois!!!!
Obrigado!!!
já viu as prepared statements do mysqli e do pdo? dá uma estudada nessa parada aí que é muito eficiente na proteção. tem como o php tipo preparar a sql pra enviar de forma segura.