Logo

dev-resources.site

for different kinds of informations.

Validação e Sanitização em Aplicações Web

Published at
11/26/2024
Categories
braziliandevs
webapp
security
portugues
Author
ruitrigo_dev
Author
12 person written this
ruitrigo_dev
open
Validação e Sanitização em Aplicações Web

O Que São e Por Que São Cruciais?

A validação e sanitização são, sem sombra de dúvida, um dos pilares da segurança em aplicações web. Enquanto a validação verifica se os dados recebidos estão no formato esperado, a sanitização limpa e transforma esses dados para garantir que são seguros para processamento.

Validação

Por um lado, a validação é como um porteiro rigoroso que verifica se tens bilhete antes de entrar no espetáculo. Verifica o tipo, o formato e o conteúdo dos dados recebidos. Vejamos um exemplo de código vulnerável sem validação:

$idade = $_POST['idade'];
$query = "SELECT * FROM utilizadores WHERE idade = $idade";
Enter fullscreen mode Exit fullscreen mode

Este código é um convite aberto a ataques de injeção SQL, pois o input pode facilmente manipular o comportamento da query. Em vez disso, deverias fazer algo como:

$idade = filter_var($_POST['idade'], FILTER_VALIDATE_INT);
if ($idade === false || $idade === null) {
    echo("Idade inválida");
}

// Cria uma conexão
$conn = new mysqli($servername, $username, $password, $dbname);

// Executa um Prepared Statement
$stmt = $conn->prepare("INSERT INTO utilizadores (idade) VALUES (?)");
$stmt->bind_param("i", $idade);
Enter fullscreen mode Exit fullscreen mode

PHP Wiki | filter_var() — Filters a variable with a specified filter

Sanitização

Por outro lado, a sanitização é como um filtro de água que remove impurezas. Transforma dados potencialmente perigosos em formatos seguros. Vejamos outro exemplo vulnerável:

$nome = $_GET['nome'];
echo "Olá, $nome!";
Enter fullscreen mode Exit fullscreen mode

Este código pode levar a um ataque XSS. Uma versão sanitizada seria:

$nome = htmlspecialchars($_GET['nome']);
echo "Olá, $nome!";
Enter fullscreen mode Exit fullscreen mode

O efeito esperado é a conversão dos caracteres "&, ', ", <, >" para o seu equivalente em HTML ENTITIES, ou seja, eles tornam-se meramente símbolos visuais sem efeito algum em termos de código interpretado pelo browser.

PHP Wiki | htmlspecialchars() — Convert special characters to HTML entities

Validação do Lado do Cliente

É importante notar que, embora a validação do lado do cliente seja útil para melhorar a experiência do utilizador, nunca é suficiente para garantir a segurança. Afinal de contas, um atacante pode facilmente contornar essas verificações. Por isso, a validação do lado do servidor é imprescindível.

Desta maneira, nem toda a sanitização é igual. Dependendo do contexto onde os dados serão utilizados, diferentes técnicas devem ser aplicadas. Por exemplo, dados que serão inseridos numa base de dados SQL requerem uma sanitização diferente daqueles que serão exibidos numa página HTML.

Não Reinventes a Roda

Felizmente, não precisas de criar todas estas proteções do zero. Existem inúmeras bibliotecas e frameworks que oferecem funções robustas de validação e sanitização. Contudo, é crucial compreender como funcionam para as utilizar corretamente.

Por fim, mas não menos importante, realizar "pentests" regularmente é fundamental. Estes testes simulam ataques reais e podem revelar falhas que passaram despercebidas. Lembra-te: é melhor descobrires as vulnerabilidades antes dos atacantes. Se tens iniciativa de o fazer, podes começar por listar a tua empresa numa plataforma Bug Bounty, onde hackers éticos reportam falhas na tua aplicação em troca de remuneração.

webapp Article's
30 articles in total
Favicon
Key Benefits of Building a Progressive Web App for Small Businesses
Favicon
Best Tech Learnings of 2024
Favicon
How to View WAF Logs and Add Custom Rules in Azure Front Door
Favicon
2025 App Essentials: 8 Features to Leverage SaaS Benefits
Favicon
Performance Testing of a medical staffing services web application using JMeter
Favicon
We have built a Tailwind CSS grid generator.
Favicon
Validação e Sanitização em Aplicações Web
Favicon
Fundamentos da Segurança em Aplicações Web
Favicon
🚀 Introducing **Preadme**: Your Ultimate README Generator!
Favicon
TOP AI Coding Tools Compared: Flatlogic, FlutterFlow AI Gen, v0, Softr.io
Favicon
15 Must-Have Tools for Web Application Security Assessment
Favicon
What Are Progressive Web Apps? – A Complete Guide in 2024
Favicon
Progressive Web Apps (PWAs): Bridging the Gap Between Web and Native Apps
Favicon
Securing a Web Application on Google Cloud Platform: Best Practices and Implementation
Favicon
Migrating a Web Application from AWS to GCP: A Step-by-Step Guide
Favicon
Quizzers Hub
Favicon
How to Effectively Convert Your Web App for Mobile?
Favicon
The Ultimate Lead Generation Tool
Favicon
Best Practices for Developing and Integrating REST APIs into Web Applications
Favicon
Have You Ever Wondered: What on Earth is App Scaling?
Favicon
Answer 1.4.0: Where Fun Meet the Content You Love
Favicon
Accelerate your Playwright test suite with Microsoft Playwright Testing
Favicon
Travel Journal Web App
Favicon
Key Technologies Behind Modern Web Applications and Websites
Favicon
CREATING A LIBRARY WEB APP USING AZURE APP SERVICE
Favicon
Top Tools for Testing Accessibility in Single Page Web Applications
Favicon
Designing a Pure Python Web Framework
Favicon
10 Must-Have Features for Modern Web Applications in 2025
Favicon
How SPAs Improve Customer Satisfaction Through Enhanced User Experience
Favicon
Comprehensive Guide to Programming Naming Conventions

Featured ones: