Eu já tenho um Firewall de entrada, posso redirecionar qualquer IP se não for da lista para um 403 ou 404.
Acho que isso não é tão difícil. Exemplo: ( https://groups.google.com/forum/?fromgroups=#!topic/mojolicious/0iiZkM4iWec) sub resource3_handler { my $self = shift; if( $self->role eq 'A' ) { if( $self->method ne 'GET' ) { $self->render(status => 403); return; } } ... } sub resource4_handler { my $self = shift; if( $self->role ne 'A' ) { $self->render(status => 403); return; } ... } Ou esses: https://github.com/lammel/mojolicious-plugin-authorization https://github.com/byterock/mojolicious-plugin-authorization/blob/master/lib/Mojolicious/Plugin/Authorization.pm http://mojocasts.com/e3 Acho que é isso, será tem como fazer uma função que é executada sempre que uma requisição é feita ? Em 12 de setembro de 2012 12:20, Daniel Mantovani < daniel.oliveira.mantov...@gmail.com> escreveu: > Ulisses, > > eu me enganei sobre o atributo que define o IP do usuário realmente não é > o *host*. > Eu não lembro exatamente agora, o 3G que eu estou usando mal me permite > usar o e-mail devido a lentidão. > > Mas o princípio é o mesmo, não tem porque você transformar um prego num > parafuso e depois transformar o parafuso num prego. Use o firewall do OS > para apenas permitir acesso aos IP's determinados por você. Ou coloque um > sistema de autenticação na aplicação. > > []'s > > > -- > "A Jedi uses the Force for knowledge and defense, never for attack." - Yoda > > Software Engineer > Just Another Perl Hacker > Daniel Mantovani +5511 8538-9897 > XOXO > > On Sep 12, 2012, at 12:11 PM, Ulisses Montenegro < > ulisses.montene...@gmail.com> wrote: > > Daniel, > > Eu acredito que o cabeçalho 'Host' indica o [virtual] host ao qual a > requisição referencia, não? Ou seja, ele se refere ao hostname ou IP > do servidor, e não do cliente. Se eu entendi a dúvida original, o > bloqueio seria feito pelo IP do cliente. > > Em geral, endereçamento é um problema de camadas abaixo da aplicação, > mas nada impede que você verifique o endereço IP do socket através do > qual sua requisição HTTP chegou. Como fazer isso no Mojo, no entanto, > eu não saberia dizer. Isso não quer dizer que você não deva filtrar > também no firewall, porque segurança em camadas é sempre uma boa > prática. > > []'s > Ulisses > > 2012/9/12 Daniel Mantovani <daniel.oliveira.mantov...@gmail.com>: > > Você não pode bloquear IP's baseado-se no header do protocolo HTTP. Porque > o > usuário tem controle sobre esse dado. > > Freedom-for-All-Mankind:~ danielmantovani$ nc -vv -l -p 9090 > listening on [any] 9090 ... > connect to [127.0.0.1] from localhost [127.0.0.1] 56262 > GET / HTTP/1.1 > Host: localhost:9090 > Connection: keep-alive > Cache-Control: max-age=0 > User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) > AppleWebKit/537.1 > (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 > Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 > Accept-Encoding: gzip,deflate,sdch > Accept-Language: en-US,en;q=0.8 > Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 > > > Existe plugin para o FireFox que modifica esse atributo do header, > inclusive > é muito fácil manipular isso. > Uma solução para isso é usar outro layer da camada OSI. > > usuário<---->roteador<----->provedor<----->internet<----->sua_app > > Uma forma segura de bloquear determinados endereços de usar a sua aplicação > é checar o protocolo TCP/IP diretamente. Porque o usuário não tem acesso ao > encapsulamento do endereço de IP que o provedor fornece. > > > Linux ( iptables => > > http://www.cs.colostate.edu/~cs556/projects/project-2/Exercise.html#netfilter > ) > FreeBSD => (Packet Filter => > http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls.html) > > > > > -- > "A Jedi uses the Force for knowledge and defense, never for attack." - Yoda > > Software Engineer > Just Another Perl Hacker > Daniel Mantovani +5511 8538-9897 > XOXO > > On Sep 8, 2012, at 2:00 PM, Jose Nilton <jnilti...@gmail.com> wrote: > > > Boa tarde Srs, > > Estava olhando a documentação do Mojo, verifiquei que é possível criar um > simples Daemon para responder em um porta http e retorno um JSON. > > Gostaria de saber se tem um forma de proteger essa aplicação para > determinados IPs, exemplo os ips que podem acessar essa aplicação > qw(192.168.0.150 10.0.0.1 200.175.200.1) > > Acho que é mais ou menos isso, mas tem executar um deny: > > use Mojolicious::Lite; > > > > # "whois" helper > > helper whois > => sub { > > > my $self = shift; > > > my $agent = $self->req->headers->user_agent || 'Anonymous'; > > > my $ip = $self->tx->remote_address; > > > return "$agent ($ip)"; > > > }; > > > > # /secret > > get > '/secret' => sub { > > > my $self = shift; > > > my $user = $self->whois; > > > $self->app->log->debug("Request from $user."); > > > }; > > > app > ->start; > > __DATA__ > > @@ secret > .html. > ep > We know who you are > <%= whois %>. > > > Tenho que criar um Server que responde em JSON e um client, ou qualquer API > que consuma objeto em JSON, mas com segurança. > > > ## Alguns links que eu achei > http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook > http://search.cpan.org/~sri/Mojolicious-3.38/lib/Mojolicious/Lite.pm > https://metacpan.org/module/Mojolicious::Controller#METHODS > > > -- > > .............................................................................. > Com Deus todas as coisas são possíveis ::: LinuxPro > > "A qualidade nunca se obtém por acaso; ela é sempre o resultado do esforço > inteligente." (John Ruskin) > "A mente que se abre a uma nova ideia jamais volta ao seu tamanho original" > (Albert Einstein) > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > > > > -- > “If debugging is the process of removing software bugs, then > programming must be the process of putting them in.” - Edsger Dijkstra > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > > -- .............................................................................. *Com Deus todas as coisas são possíveis* ::: LinuxPro<http://www.linuxpro.com.br> *"A qualidade nunca se obtém por acaso; ela é sempre o resultado do esforço inteligente." (John Ruskin) "A mente que se abre a uma nova ideia jamais volta ao seu tamanho original" (Albert Einstein)*
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer