Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Sanitizing input, escaping output

Tenho algumas dúvidas relacionadas a segurança... Vi no curso que conseguimos validar os inputs de forma bem fácil e tal, mas e filtragem de dados do input? O laravel já tem algo automático relacionado a isso por debaixo dos panos ou devemos no preocupar quando chamamos a classe Request? Acredito que pro banco de dados não temos que nos preocupar com mysql injection já que utiliza PDO e bindings, certo? Em relação ao blade ele também possui algum escape automático dos outputs?

3 respostas
solução!

Olá, Fabio!

Muito legal sua preocupação com segurança.

Para filtrar o input existem inúmeras formas. A mais simples é utilizar a função filter_var nas variávels que for utilizar. Normalmente eu faço desta forma quando é algo simples.

Se você quer algo mais "automatizado" ou próximo ao framework, você pode criar um middleware de sanitização, por exemplo. Nas rotas que recebe dados do request você aplica o middleware que vai realizar os filtros nos dados necessários.

Pesquisando eu achei esse post: https://laracasts.com/discuss/channels/laravel/filtering-request-input?page=0

Mas não testei o código.

Quanto à saída, sim. O blade já escapa automaticamente tags HTML, logo, não precisamos nos preocupar com isso.

E em relação a SQL Injection, o ORM (Eloquent) também cuida disso pra nós, mas segurança nunca é demais, então eu normalmente filtro os dados que mando pro ORM. :-)

Espero ter sanado algumas de suas dúvidas.

Já que você curte segurança, dá uma olhada nos cursos de segurança aqui da Alura. Parecem ser bem interessantes.

:-D

Forte abraço e bons estudos.

Vi aqui na documentação que o próprio Laravel já implementa uma espécie de filtro em nossos requests. Ele faz trim e converte strings vazias para null:

https://laravel.com/docs/5.8/requests#input-trimming-and-normalization

Segurança nunca é de mais né? Vou ver essa via middleware, parece uma abordagem interessante e prática. Dei uma olhada também no Purifier no github parece que ainda funciona pro laravel 5.5+.

Fiz um curso de segurança web aqui na alura há algum tempo o que me fez abrir os olhos pra XSS e CSRF, vi agora que já existem alguns outros e farei sem dúvida :)

Espero que tenha mais curso do laravel, a programação é muito fluida e a documentação é muito legal e fácil de entender, o que me fez gostar muito do framework! Abraços