Função de segurança PHP: strip_tags, filter_var, Md5 e sha1

Ameaças potenciais à segurança

Eles são basicamente dois grupos de pessoas que podem atacar o seu sistema

  • Hackers – com a intenção de obter acesso a dados não autorizados ou interromper o aplicativo
  • Usuários – eles podem inserir parâmetros errados inocentemente em formulários que podem ter efeitos negativos em um site ou aplicativo da web.

A seguir estão os tipos de ataques que precisamos observar.

Injeção de SQL – Este tipo de ataque anexa código prejudicial a SQL afirmações.

Isso é feito usando formulários de entrada do usuário ou URLs que usam variáveis.

O código anexado comenta a condição na cláusula WHERE de uma instrução SQL. O código anexado também pode;

  • insira uma condição que sempre será verdadeira
  • excluir dados de uma tabela
  • atualizar dados em uma tabela
  • Esse tipo de ataque geralmente é usado para obter acesso não autorizado a um aplicativo.

Scripting entre sites – esse tipo de ataque insere código prejudicial geralmente JavaScript. Isso é feito usando formulários de entrada do usuário, como formulários de contato e comentários. Isso é feito para;

  • Recuperar informações confidenciais, como dados de cookies
  • Redirecione o usuário para um URL diferente.
  • Outras ameaças podem incluir – injeção de código PHP, injeção de shell, injeção de e-mail, divulgação de código-fonte de script, etc.

Melhores práticas de segurança de aplicativos PHP

Vejamos agora algumas das melhores práticas de segurança PHP que devemos considerar ao desenvolver nossas aplicações.

PHP strip_tags

As funções strip_tags removem HTML, JavaScript ou tags PHP de uma string.

Esta função é útil quando precisamos proteger nossa aplicação contra ataques como cross site scripting.

Vamos considerar um aplicativo que aceita comentários de usuários.

<?php

$user_input = "Your site rocks";

echo "<h4>My Commenting System</h4>";

echo $user_input;

?>

Supondo que você salvou comments.php na pasta phptuts, navegue até o URLhttp://localhost/phptuts/comments.php

PHP strip_tags

Vamos supor que você receba o seguinte como entrada do usuário alert(‘Your site sucks!’);

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo "<h4>My Commenting System</h4>";

echo $user_input;

?>

Navegue até o URL http://localhost/phptuts/comments.php

PHP strip_tags

Vamos agora proteger nosso aplicativo contra tais ataques usando a função strip_tags.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo strip_tags($user_input);

?>

Navegue até o URL http://localhost/phptuts/comments.php

PHP strip_tags

Função filter_var PHP

A função filter_var é usada para validar e limpar dados.

A validação verifica se os dados são do tipo correto. Uma verificação de validação numérica em uma string retorna um resultado falso.

Sanitização é remover caracteres ilegais de um corda.

Verifique este link para a referência completa filtro_var

O código é para o sistema de comentários.

Ele usa a função filter_var e a constante FILTER_SANITIZE_STRIPPED para remover tags.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);

?>

Saída:

alert('Your site sucks!');

Função mysqli_real_escape_string Esta função é usada para proteger uma aplicação contra injeção de SQL.

Suponhamos que temos a seguinte instrução SQL para validar o ID do usuário e a senha.

<?php
SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass';
?>

Um usuário mal-intencionado pode inserir o seguinte código na caixa de texto do ID do usuário. 'OU 1 = 1 — E 1234 na caixa de texto da senha Vamos codificar o módulo de autenticação

<?php

$uid = "' OR 1 = 1 -- ";

$pwd = "1234";

$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";

echo $sql;

?>

O resultado final será

SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';

AQUI,

  • “SELECT * FROM users WHERE user_id = ”” testa um ID de usuário vazio
  • “'OR 1 = 1“ é uma condição que sempre será verdadeira
  • “-” comenta a parte que testa a senha.

A consulta acima retornará todos os usuários. Vamos agora usar a função mysqli_real_escape_string para proteger nosso módulo de login.

<?php

$uid = mysqli_real_escape_string("' OR 1 = 1 -- ");

$pwd = mysqli_real_escape_string("1234");

$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";

echo $sql;

?>

O código acima irá resultar

SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';

Note a segunda aspa simples foi escapada para nós, ela será tratada como parte do ID do usuário e a senha não será comentada.

PHP MD5 e PHP sha1

Md5 é o acrônimo para Message Digest 5 e sha1 é o acrônimo para Secure Hash Algorithm 1.

Ambos são usados ​​para criptografar strings.

Depois que uma string é criptografada, é tedioso descriptografá-la.

MD5 e sha1 são muito úteis ao armazenar senhas no banco de dados.

O código abaixo mostra a implementação de md5 e sha1

<?php
echo "MD5 Hash: " . md5("password");
echo "SHA1 Hash: " . sha1("password");
?>

Supondo que você salvou o arquivo hashes.php na pasta phptuts, navegue até o URL

PHP MD5 e PHP sha1

Como você pode ver nos hashes acima, se um invasor obtivesse acesso ao seu banco de dados, ele ainda não saberia as senhas para fazer login.

Resumo

  • Segurança refere-se a medidas implementadas para proteger um aplicativo contra ataques acidentais e maliciosos.
  • A função strip_tags é usada para remover tags como a partir de dados de entrada
  • A função filter_var valida e php limpa os dados de entrada
  • mysqli_real_escape_string é usado para limpar a instrução SQL. Remove caracteres maliciosos das declarações
  • tanto MD5 quanto SHA1 são usados ​​para criptografar senha.

Boletim informativo diário Guru99

Comece o seu dia com as últimas e mais importantes notícias sobre IA entregues agora mesmo.