<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Você não pode bloquear IP's baseado-se no header do protocolo HTTP. Porque o usuário tem controle sobre esse dado.<div><br></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div>Freedom-for-All-Mankind:~ danielmantovani$ nc -vv -l -p 9090</div><div>listening on [any] 9090 ...</div><div>connect to [127.0.0.1] from localhost [127.0.0.1] 56262</div><div>GET / HTTP/1.1</div><div><b>Host: localhost:9090</b></div><div>Connection: keep-alive</div><div>Cache-Control: max-age=0</div><div>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</div><div>Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</div><div>Accept-Encoding: gzip,deflate,sdch</div><div>Accept-Language: en-US,en;q=0.8</div><div>Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3</div></blockquote><div><div><br></div><div>Existe plugin para o FireFox que modifica esse atributo do header, inclusive é muito fácil manipular isso.</div><div>Uma solução para isso é usar outro layer da camada OSI.</div><div><br></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;"><div><div>usuário<---->roteador<----->provedor<----->internet<----->sua_app</div></div><div><br></div></blockquote>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.<div><br></div><div><br></div><div><div>Linux ( iptables => <a href="http://www.cs.colostate.edu/~cs556/projects/project-2/Exercise.html#netfilter">http://www.cs.colostate.edu/~cs556/projects/project-2/Exercise.html#netfilter</a> )</div><div>FreeBSD =>  (Packet Filter => <a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls.html">http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls.html</a>)</div><div><br></div><div><br></div><div><br></div><div><div><div><div><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 +5511 8538-9897<br>XOXO<br></div><br>On Sep 8, 2012, at 2:00 PM, Jose Nilton <<a href="mailto:jniltinho@gmail.com">jniltinho@gmail.com</a>> wrote:<br><br><blockquote type="cite"><br>Boa tarde Srs,<br><br>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.<br><br>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)<br><br>Acho que é mais ou menos isso, mas tem executar um deny:<br><br>  use Mojolicious::Lite;<div><br></div><div><br></div><div>  </div># "whois" helper<div><br></div><div>  helper whois </div>=> sub {<div><br></div><div>    </div>my $self  = shift;<div><br></div><div>    </div>my $agent = $self->req->headers->user_agent || 'Anonymous';<div><br></div><div>    </div>my $ip    = $self->tx->remote_address;<div><br></div><div>    </div>return "$agent ($ip)";<div><br></div><div>  </div>};<div><br></div><div><br></div><div>  </div># /secret<div><br></div><div>  get </div>'/secret' => sub {<div><br></div><div>    </div>my $self = shift;<div><br></div><div>    </div>my $user = $self->whois;<div><br></div><div>    </div>$self->app->log->debug("Request from $user.");<div><br></div><div>  </div>};<div><br></div><div><br></div><div>  app</div>->start;<div><br></div><div>  __DATA__</div><div><br></div><div>  @@ secret</div>.html.<div>ep</div><div>  We know who you are </div><%= whois %>.<br><br><br>Tenho que criar um Server que responde em JSON e um client, ou qualquer API 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">http://mojolicio.us/perldoc/Mojolicious/Guides/Cookbook</a><br>http://search.cpan.org/~sri/Mojolicious-3.38/lib/Mojolicious/Lite.pm<br>https://metacpan.org/module/Mojolicious::Controller#METHODS<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 inteligente." (John Ruskin)<br>"A mente que se abre a uma nova ideia jamais volta ao seu tamanho original" (Albert Einstein)<br><br>=begin disclaimer<br>  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/<br>SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org<br>L<http://mail.pm.org/mailman/listinfo/saopaulo-pm><br>=end disclaimer<br></blockquote><br></div></div></div></div></div></body></html>