Objota O mundo orientado a objetos

hashDoS a falha de segurança que afeta a maioria das linguagens WEB

Posted on janeiro 1, 2012

Posted by Eder Freire

Recentemente na Alemanha aconteceu a 23ª edição da Chaos Computer Club, uma conferência de segurança muito conhecida entre os hackers de todo mundo e, pra variar, as primeiras palestras foram assustadoras. Um pesquisador encontrou uma brecha que afeta milhões de celulares no mundo todo nas redes 2G GSM, mas o que realmente me chamou atenção foi uma dupla de pesquisadores avisou que milhões de sites estão vulneráveis a um novo tipo de ataque DoS (Denial of Service), chamado hashDoS, que pode deixá-los fora do ar se não tratado com rapidez.

Os pesquisadores Alexandre Klink e Julian Wälde gesticularam e demonstraram que o problema está na maneira que certas linguagens usadas em servidores web armazenam valores em uma tabela hash. A grande maioria utiliza do mesmo método e pessoas mal-intencionadas podem tirar vantagens disso, enviando valores pré-determinados que sabem sabem que não serão tratados da forma que deveriam ser tratados. Essas requisiões, no final das contas, acaba gerando uma função quadrática que sobrecarrega os servidores.

Para provar que o método funciona, durante a apresentação, eles enviaram requisições do tipo HTTP POST com 2 MB de tamanho para um servidor WEB rodando Apache Tomcat, isso foi o suficiente para que o processamento do servidor subisse para a marca de 100% de consumo e permanecesse neste nível durante toda a palestra.

Quais linguagens afetadas?

A lista não é nada pequena. Nela constam PHP, ASP.NET, Java, Python, Ruby, Apache Tomcat, Apache Geronimo, Jetty, Glassfish, e até a V8, engine de renderização de JavaScript do Google.

Note que aqui temos interpretadores e servidor de aplicação, nessa os servidores WEB e o protocolo HTTP escaparam, sempre alvos de ataques de hackers.

Quais linguagens ja iniciaram o processo de correção e em qual versão isso ja está corrigida?

JRuby >= 1.6.5.1
PHP >= 5.3.9 (ainda está em Release Candidate), 5.4.0 RC4
Ruby >= 1.8.7-p357, 1.9.x
Apache Tomcat >= 5.5.35, 6.0.35, 7.0.35
Rack >= 1.4.0, 1.3.6, 1.2.5, 1.1.3

A Microsoft ja anunciou que vai liberar uma atualização para o ASP.NET que soluciona esse problema.

Os mais afetados com certeza serão os sites com PHP, hoje 77% dos sites em PHP rodam sob o PHP 5.2, que não teve nenhum suporte a este buf-fix. O certo é migrar-mos nossos sites para o PHP 5.3.9 RC, a 5.3 ja é a versão estável do PHP, o que garante atualizações de segurança e novos recursos.

Há linguagens que não entraram na lista, pois isso não era novidade para seus criadores, uma que vale a pena destacar, a qual eu sou fã, é o Perl, eles trataram esse problema em meados de 2003, pois ja haviam identificado essa falha.

A explicação é extramamente complexa, vale a pena dar uma olhada no vídeo da apresentação no Youtube .

Você também pode conferir o anúncio oficial.

Hello World em Python – O seu primeiro programa em Python

Posted on novembro 12, 2011

Posted by Eder Freire

A idéia em mainstream de hoje é apresentar o Python e fazer você, caro leitor, gostar de Python.

Para que você veja o porquê Python é considerada uma linguagem de altíssimo nível, este termo é utilizado para as novas linguagens que estão surgindo que tem como filosofia reduzir o esforço do programador para conseguir 1 resultado, antes de ver o Hello World em Python vamos ver em outras linguagens, mais especificamente em C++ e Java.

Hello World em C++
#include <iostream>
<pre>int main()
{
    std::cout << "Hello World!" << std::endl;
    return 0;
}

Hello World em Java

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

Antes de passar e mostrar como ficaria um Hello World em Python, verifique se ele ja está instalado e configurado em seu computador. Em computadores com sistemas operacionais Linux ou MAC OSX, o Python vem instalado como padrão, caso você utilize Windows entre no site http://python.org e faça o download da versão 2.7.2 do Python para seu sistema operacional. Caso esteja instalando no Windows não esqueça de colocar a pasta X:\Python27 nas variáveis de ambiente. Com o Python ja instalado, entre no Terminal (CMD no Windows) e digite python, abrirá uma linha de comando nova ai, esse você acabou de inicializar o interpretador do python em modo interativo. Com o compilador aberto vamos nos divertir, digite os códigos abaixo:

print "Hello World"

Pronto acabou! O que você achou? Essa é a filosofia do Python, falando nisso, aproveita que o interpretador está aberto e digite

import this

Este é o Zen do Python, que estou me atrevendo a colocar aqui uma tradução livre.

Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Linear é melhor do que aninhado.
Esparso é melhor que denso.
Legibilidade conta.
Casos especiais não são especiais o bastante para quebrar as regras.
Ainda que praticidade vença a pureza.
Erros nunca devem passar silenciosamente.
A menos que sejam explicitamente silenciados.
Diante da ambigüidade, recuse a tentação de adivinhar.
Deveria haver um — e preferencialmente só um — modo óbvio para fazer algo.
Embora esse modo possa não ser óbvio a princípio a menos que você seja holandês.
Agora é melhor que nunca.
Embora nunca freqüentemente seja melhor que *já*.
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa idéia.
Namespaces é uma grande idéia — vamos ter mais dessas!
Espero que essas informações tenham sido úteis, continuem acompanhando os nossos posts sobre Python.

Uma introdução ao Python

Posted on novembro 11, 2011

Posted by Eder Freire

Quando nos deparamos com um código em Python pela primeira vez é normal nos sentirmos confortáveis pelo modo em que ele é escrito, pela fácil leitura que se assemelha bastante sua sintaxe com C e Pascal, que são linguagens padrões do mercado.

Essa semelhança ainda é mais notável quando é comparada com C, muitas das palavras reservadas, identificadores e operadores vem do C, isso foi proposital.

O Python foi criado em 1991 por Guido Van Rossum, é comum ouvirmos que o Python é "orientado ao programador", isso porquê na época quando o Guido Van Rossum começou a desenvolver a linguagem o preço de hardware estava ficando barato e o programador estava ficando caro, com isso ele teve a idéia de criar uma linguagem para facilitar e abstrair algumas complexidades e trouxesse mais flexibilidade do que o C, para que o programador pudesse fazer projetos rápidos sem preocupações por exemplo com gerenciamento de memória.

É comum ver códigos python de 1 linha que precisam de 20 linhas em C para obter o mesmo resultado.

Muitas vezes o Python é taxado de minimalista por causa da sua facilidade de leitura e sua semântica simples.

Motivos para aprender Python

Interpretada

O Python é uma linguagem interpretada, ela roda dentro do interpretador, existem compiladores também como o Jython, o Pip e o IronPython.

Dinâmica

Os tipos de variáveis são definidos em tempo de execução

Tipagem Forte

Isso significa que as variáveis são fortemente tipadas, elas não aceitam um tipo de dado diferente do que ele foi inicializado, se eu somar 1+1 eu vou obter o resultado 2, em python se eu somasse 1+a eu obteria um erro.

Multiparadigma

Python pode ser programada de forma Procedural, Orientado a objetos e Funcional.

Identação como delimitador de blocos

Isso com certeza vai mudar sua vida, em outras linguagens se você não identa seu código, você tem uma leitura ruim dos códigos, no Python se você não identar você vai obter um erro de sintaxe.

Falta de identação no Python é erro de Sintaxe.

Espero que tenham gostado, e que tenha aberto o apetite de vocês para aprender um pouco mais dessa linguagem. Se você não sabe programar e ta afim de aprender, recomendo começar por aqui e acompanhar os nossos próximos artigos.

Qualquer dúvida que tiverem estou a disposição para responde-la.