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

   Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
 SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
 L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br><br clear="all"><br>-- <br>..............................................................................<br><b>Com Deus todas as coisas são possíveis</b> ::: <a href="http://www.linuxpro.com.br" target="_blank">LinuxPro</a><br>
<br><i><font size="1">"A qualidade nunca se obtém por acaso; ela é sempre o resultado do esforço inteligente." (John Ruskin)<br>"A mente que se abre a uma nova ideia jamais volta ao seu tamanho original" (Albert Einstein)</font></i><br>
<br>