OpenBanking-Brasil / specs-seguranca

Documentação das especificações do GT de Segurança do Open Banking Brasil. As especificações ainda estão em versão draft e não devem ser utilizadas para implementação.
66 stars 46 forks source link

Adicionado validação de padrão via expressão regular para campo webhook_uris #419

Closed nic closed 7 months ago

nic commented 7 months ago

Expressão regular:

^(https:\/\/[^\s\/?#]+(?:\/[^\s\/?#]+)*[^\/\s?#])$

Foram usadas as seguintes URLs para teste do pattern criado:

URLs válidas:

https://myitp.com
https://www.myitp.com/mykong3
https://www.myitp.com/mykong3/qwe

URLs inválidas:

http://www.myitp.com/mykong3
https://www.myitp.com/mykong3/
https://www.myitp.com/mykong3/asd/
https://www.myitp.com/mykong3?hue=br
https://www.myitp.com/mykong3/asd/?hue=br&teste=123
https://www.myitp.com/mykong3?hue=br&teste=123&
https://www.myitp.com/
https://www.myitp.com/?
https://www.myitp.com?
https://www.myitp.com/mykong3?
https://www.myitp.com/mykong3/asd?
ranierimazili commented 7 months ago

Pessoal, fiz um teste e acredito ter encontrado um problema com este regex.

A seguinte url funciona perfeitamente: https://www.uol.com.br/aa/bb/cc

No entanto, se tirar a última letra, já não funciona: https://www.uol.com.br/aa/bb/c

Até onde sei, são permitidas URLs com apenas uma letra no path.

Fiz o teste pelo site https://regex101.com/.

Como esse teste não passou, segurei a deliberação do tema para a quinta-feira(25/04/2024) no GT Segurança para verificarmos se encontramos uma solução até lá.

Após alguns testes, acredito que o pattern que resolva o problema definitivamente é o abaixo:

^(https:\/\/[^\s\/?#]+(?:\/[^\s\/?#]+)*)$

Fiz os testes com as mesmas URLs apresentadas pelo @nic no primeiro comentário e também com URLs que tenham apenas uma letra após a / e funcionou.

@nic Você consegue realizar a validação e alteração do PR se a solução acima estiver correta?

nic commented 7 months ago

@ranierimazili Opá! Boa. Corrigido aqui. Muito obrigado! ❤️