[SP-pm] Mojolicious Daemon e Client em JSON

Daniel Mantovani daniel.oliveira.mantovani at gmail.com
Wed Sep 12 08:04:56 PDT 2012


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 <jniltinho em 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 em pm.org
> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer

-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120912/4dc68330/attachment.html>


More information about the SaoPaulo-pm mailing list