Mostrando postagens com marcador Segurança da informação. Mostrar todas as postagens
Mostrando postagens com marcador Segurança da informação. Mostrar todas as postagens

quinta-feira, 22 de setembro de 2011

Como evitar ataques de SQL Injection no PHP e MySQL

A melhor função para proteger sistemas em PHP e MySQL contra SQL Injection é a mysql_real_escape_string(). Ela faz escapar os caracteres especiais, como aspas simples e duplas, antes de enviar para o banco de dados.

Esta função não funciona em todas as versões do PHP, então devemos verificar se ela existe, e caso não exista, utilizar a função mysql_escape_string().

Também devemos ter em mente que se a diretiva get_magic_quotes_gpc() está ligada ela acrescenta barras invertidas automaticamente antes de aspas simples e duplas. O problema é que ela envia para o banco de dados com as barras invertidas, estragando o texto. Para contornar isso usamos a função stripslashes() para remover essas barras invertidas.

Então vamos montar a nossa função com o nome de anti_sql_injection():

function anti_sql_injection($str) {
     if (!is_numeric($str)) {
          $str = get_magic_quotes_gpc() ? stripslashes($str) : $str;
          $str = function_exists('mysql_real_escape_string') ? mysql_real_escape_string($str) : mysql_escape_string($str);
          }
     return $str;

Note que em nossa função primeiro verificamos se o valor informado não é numérico, ou seja, que precisa ser tratado. Em seguida verificamos se a diretiva get_magic_quotes_gpc() está ativada. Se estiver usamos a função stripslashes(). Em seguida verificamos se existe a função mysql_real_escape_string(). Se existir usamos ela, caso contrário, usamos a função mysql_escape_string().

Veja um exemplo de como usar a função:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
     $usuario = trim($_POST['POST']);
     $senha = trim($_POST['senha']);

     $sql = 'SELECT COUNT(id_usuario) ';
     $sql .= 'FROM usuarios ';
     $sql .= 'WHERE usuario = \'' . anti_sql_injection($usuario) . '\' ';
     $sql .= 'AND senhha = \'' . anti_sql_injection($senha) . '\' ';
     $query = mysql_query($sql) or die('Erro na consulta: ' . mysql_error());
     $total = mysql_result($query, 0);
     if ($total > 0) {
          echo 'Usuário e senha corretos.';
     } else {
          echo 'Usuário e/ou senha inválido(s).';
     }

Pronto! Estamos vacinados contra ataques de SQL Injection.

Ligue a vontade para qualquer celular ou fixo em todo o Brasil, EUA e Canadá, através do 99TelexFREE. Teste nosso serviço por 1 hora gratuitamente: http://www.telexfree.com/ad/marcelmesmo 

Netfilter, iptables

Publiquei em meu Scribd slides sobre o firewall Netfilter iptables, de uma aula do professor Sales Filho, da disciplina de Segurança de Redes do curso de Redes de Computadores do IFRN.

Clique aqui para acessar

Segurança perimetral: firewall e proxy

Postei no meu Scribd uma aula sobre firewall e proxy, do professor Sales Filho, do IFRN.

Clique aqui para acessar

Ataques e mecanismos de segurança de redes de computadores

Publiquei em meu Scribd alguns slides sobre ataques e mecanismos de segurança da informação, referentes a três aulas do professor Sales Filho, da disciplina de Segurança de Redes, do curso de Redes de Computadores do IFRN.

Clique aqui para acessar

segunda-feira, 19 de setembro de 2011

Classificação da informação

Existem quatro aspectos importantes para a classificação das informações. Cada tipo de informação deve ser examinado a partir desses aspectos para poder ser mais bem classificada:

Integridade - a informação é atual, completa e mantida por pessoas autorizadas.

Disponibilidade - a informação está sempre disponível quando necessária ao pessoal autorizado.

Confidencialidade - a informação só é acessada pelos indivíduos autorizados. 

Valor - a informação tem um alto valor para a organização.

Outro fator que deve ser considerado ao se gerar uma política de segurança é o nível de ameaça conhecido que cada informação tem. Para isso devem ser respondidas questões como: Existem concorrentes buscando a informação? É possível que ela fique indisponível? E por qual motivo isso pode acontecer? É uma informação fácil de perder a integridade, ficar desatualizada?

Níveis de segurança

Com base na análise dos parâmetros acima podemos chegar ao nível de segurança da informação. Um nivelamento de segurança pode seguir a seguinte classificação:

Irrestrito - Esta informação é pública, podendo ser utilizada por todos sem causar danos à organização. 

Interna - Esta informação é aquela que a organização não tem interesse em divulgar, cujo acesso por parte de indivíduos externos a ela deve ser evitado. Entretanto, caso esta informação seja disponibilizada ela não causa danos sérios à organização.

Confidencial - Informação interna da organização cuja divulgação pode causar danos financeiros ou à imagem da organização. Essa divulgação pode gerar vantagens a eventuais concorrentes e perda de clientes.

Secreta - Informação interna, restrita a um grupo seleto dentro da organização. Sua integridade deve ser preservada a qualquer custo e o acesso bastante limitado e seguro. Esta é a informação considerada vital para a companhia.

Para podermos chegar nestes níveis de segurança podemos nos guiar também pela seguinte tabela:

O que devemos notar é que o nível de segurança pode ser aumentado tanto pela necessidade de confidencialidade quanto pela de disponibilidade. Uma informação que deve estar sempre disponível deve ter um serviço robusto trabalhando para isso, assim como uma informação confidencial também. E existem ainda os casos onde estes fatores se somam. Por exemplo, uma informação pode ter requisitos de confidencialidade média, mas integridade alta. Assim o nível de segurança da informação deve ser definido levando em conta todos estes fatores em conjunto e não apenas um deles isoladamente. E para isso surge a próxima questão que é "quem define este nível".

Estabelecendo responsabilidades

Para definir o nível de segurança da informação de cada setor da organização a pessoa mais indicada é o próprio responsável daquele setor. Ele é quem certamente conhece melhor as informações do seu setor assim como as necessidades de confidencialidade, integridade e disponibilidade do setor.

Após esta classificação ser feita também é importante que alguém de um nível superior a ele esteja verificando a classificação para garantir que as informações que precisem transitar entre os diversos setores não sejam demais protegidas e isoladas em um setor e também que as informações que não podem transitar estejam protegidas.

Além do responsável pela classificação é preciso também estabelecer os responsáveis pela manutenção dos níveis de segurança definidos. Neste caso todos os funcionários devem ser envolvidos e deve ser criado um plano com um regime de responsabilidades claro e disponível para todos. Além disso, deve ser feito um treinamento para passar os dados deste plano e se possível deve haver um supervisor que verifique a efetivação do plano nos diversos setores da organização.

Implementando a classificação

Para a implementação da categorização devem ser consideradas as seguintes práticas:

• Identificação/marcação dos recursos informacionais;

• Armazenamento da informação;

• Transmissão de informações;

• Eliminação de informação desnecessária;

• Garantia da integridade da informação;

• Permissão de acesso apropriado;

• Estabelecimento de responsabilidades.

Vejamos alguns exemplos destas implementações:

- Para a identificação/marcação dos recursos informacionais:

- Para o armazenamento das informações, de acordo com sua classificação:

- Para transmissão das informações:

O descarte de informações

O lixo de certas empresas pode vir a ser uma grande fonte de informações confidenciais caso as mesmas não se preocupem com o descarte das informações. De nada adianta um relatório ser confidencial, acessado com uma boa senha e transmitido com criptografia caso ele seja impresso e o papel jogado no lixo sem as informações serem eliminadas.

Assim toda mídia impressa que contenha informações relevantes deve ser destruída antes de ser descartada. Isso pode ser feito por picotadores de papel.

Protegendo a integridade

Para a proteção da integridade nos documentos eles todos devem conter informações que identifiquem sua origem assim como um carimbo caso se faça necessário. No caso de documentos eletrônicos eles devem ser controlados através de esquemas de permissão de acesso, restringindo a possibilidade de gravação aos usuários autorizados.

Caso a necessidade de integridade seja alta, certos documentos devem ser armazenados em uma localização central, só podendo ser retirados sob-custódia e com tempo limitado.

O acesso às informações

O acesso às informações deve ser feito de acordo com as políticas estabelecidas para o armazenamento das mesmas. 

Responsabilidades

Após as responsabilidades serem estabelecidas e definidas e os treinamentos serem feitos cada funcionário deve assinar um termo de responsabilidade indicando sua concordância com a política estabelecida.

Um processo para a implementação da classificação

Para implantar a classificação proposta, considerando as práticas acima, podemos seguir os seguintes passos:

• Inventário;

• Classificação de risco;

• Definir política da organização;

• Definir políticas por projetos;

• Implementação de práticas de segurança;

• Treinamento;

• Identificação (marcação);

• Monitoramento.