HashLoad / horse

Fast, opinionated, minimalist web framework for Delphi
MIT License
1.17k stars 217 forks source link

(Delphi) - Como eu obtenho o IP da pessoa qual realizou a requisição? #407

Open lotexiu opened 1 month ago

lotexiu commented 1 month ago

Eu estou começando a usar o Horse e estou aprendendo ao poucos como utilizar e queria descobrir o ip de quem realizou a requisição para estar gerando Logs e dependendo estar bloqueando a requisição caso seja alguem com intenções maliciosas.

lotexiu commented 1 month ago

Estou peguntando aqui como issue pois é mais facil de alguem ver e não cheguei a encontrar uma discussão falando sobre

aoshiminamoto commented 1 month ago

Boa Noite Colega,

Existe um Middleware que pode te ajudar a obter o IP da requisição porem, acredito que o controle de acesso a API deva ser realizado com o controle de autorizações BasicAutentication ou JWTAutentication.

Utilizando destes controles vc pode limitar o acesso a API por usuário / senha e posteriormente por prazo de uso colocando limite de tempo na utilização do Token.

Caso precise de alguma ajuda fico a disposição.

lotexiu commented 1 month ago

@aoshiminamoto

Boa Noite Colega,

Existe um Middleware que pode te ajudar a obter o IP da requisição porem, acredito que o controle de acesso a API deva ser realizado com o controle de autorizações BasicAutentication ou JWTAutentication.

Utilizando destes controles vc pode limitar o acesso a API por usuário / senha e posteriormente por prazo de uso colocando limite de tempo na utilização do Token.

Caso precise de alguma ajuda fico a disposição.

Então, eu já contenho uma estrutura criada própria para Token qual ajuda bastante, porem a minha API contém requisições publicas (não exige Token). Por mais que essas requisições não tem nenhum problema de pessoas realizarem a requisição, eu quero bloquear conexões com ip cujo chegam a ter um comportamento estranho. por exemplo caso a gente tem uma requisição que gera e retorna o token, mas você precisa citar o usuario e senha caso eu não tenha um sistema de bloquear ip, não serei capaz de evitar as tentativas de acesso frequente. Caso eu tivesse, eu posso limitar o numero de tentativas de login e bloquear o ip caso o numero de tentativas excede o limite

Bem, irei verificar sobre o JWT/Basic (Autentication). Logo entrarei em contato novamente em caso de duvidas, mas agradeço pela ajuda.

lotexiu commented 1 month ago

@aoshiminamoto Ah é, por acaso existe um sistema de gerenciamento de memoria de objetos que evite vazamento de memória? atualmente encontrei apenas o que pertence ao JCL (JEDI), mas não é algo que estou procurando exatamente. O que estou a procura seria algo semelhante ao codigo que estou desenvolvendo. Talvez algo no meu repositorio lhe ajude.

https://github.com/lotexiu/HelperLibrary/blob/main/src/generic/UAutoDestroy.pas Lembrando que ainda não esta pronto. tem muitas coisas que estou vendo e desenvolvendo.

viniciussanchez commented 1 month ago

https://github.com/dliocode/horse-utils-clientip