Bom, novamente demonstrando minha ignorância do Mojo, mas ele não roda sob um Apache/mod_perl? Nesse caso, não dá para filtrar isso direto no servidor web?
Caso não rode, também dá para colocar um Apache com mod_proxy na frente, e fazer essa restrição por lá. Em ambos os casos você ganha uma camada de proteção extra. O único problema é caso você precise dar manutenção nessa lista com alguma frequência, porque aí significaria potencialmente reiniciar o servidor web e/ou firewall a cada modificação... []'s 2012/9/12 Jose Nilton <[email protected]>: > 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 > <[email protected]> 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 >> <[email protected]> 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 <[email protected]>: >> >> 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 <[email protected]> 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: [email protected] >> 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: [email protected] >> 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: [email protected] >> 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: [email protected] >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> =end disclaimer >> > > > > -- > .............................................................................. > 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: [email protected] > 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: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
