Pergunta

O que formas existem para detectar exploits em aplicações web PHP / MySQL (verificação de determinados caracteres ou pedaços de códigos no GET, POST, matrizes BISCOITO / usando uma biblioteca com um banco de dados que tem todos os padrões para exploits comuns, se qualquer exist?) e como devo proceder quando um é detectado?

Por exemplo, se alguém tentou encontrar uma injeção SQL no meu aplicativo web PHP / MySQL usando o método de solicitação GET, devo armazenar a ação executada pelo usuário no banco de dados, têm o envio aplicação-me um e-mail, IP proibir o usuário e exibir a ele / ela uma mensagem "Desculpe, mas temos detectado uma ação prejudicial da sua conta que será revisto. sua conta foi desativada e determinadas características pode ser desativado a partir do seu endereço IP. Se isso é um erro , por favor envie um e-mail com todos os detalhes. "

Graças.

Foi útil?

Solução

Três coisas vêm à mente:

  1. codificação defensiva, higienizar todas as entradas, preparar instruções SQL e uso Suhosin
  2. aumentar a segurança do seu site, invadindo-a com um vulnerabilidade scanner de
  3. log hackers attemtps com um Intrusion Detection System

Se você se sentir um total de IDS verdadeiras é demais, tente PHP IDS , como faz muito bem o que está pedindo para fora da caixa. Note-se que a detecção de intrusões no nível do PHP já pode ser tarde demais embora para evitar um ataque.

No caso de uma invasão bem sucedida, eu acho que sua melhor aposta é tomar o servidor off-line e ver o que o dano foi feito. Você pode ter que considerar a contratação de alguém para fazer uma análise forense da máquina em caso de necessidade de recolher provas legalmente utilizável.

Se você acha que precisa para reagir a tentativas de intrusão sem sucesso e tem IP do usuário mal-intencionado, descobrir o ISP e informá-lo com o máximo de detalhes da tentativa de intrusão possível. A maioria dos ISPs têm um contato abuso para estes casos.

Outras dicas

A sua pergunta é dupla e eu vou responder à segunda parte.

Log tudo, mas não proibir ou exibir qualquer mensagem. Será embaraçoso em caso de um falso positivo. Como regra geral, tente construir um aplicativo que pode lidar com qualquer tipo de entrada do usuário sem nenhum problema.

apenas usar strip_tags () em todos os US $ _REQUEST e US $ _COOKIE vars para cuidar de código mostrando-se nestes Vars, como para SQL, você teria que talvez escrever uma consulta semelhante regex ou algo assim, mas isso não deve ser um questão como você deve sempre mysql_real_escape_string ($ str) todas as variáveis ??em suas consultas. tentar algo como isso embora.

function look_for_code_and_mail_admin($str) {
    $allowed_tags = "<a>,<br>,<p>";
    if($str != strip_tags($str, $allowed_tags)) {
        $send_email_to = "some@bodys.email";
        $subject = "some subject";
        $body = "email body";
        mail($send_email_to,$subject,$body);   
    }
    return($str);
}

Hum, eu não me lembro a última vez que eu vi um site que tenta fazer logon ataques de injeção SQL que eu não era capaz de penetrar ..

Você não precisa se preocupar com o tempo que alguém está atacando o site, como é subjetiva no máximo, como ao tempo algo é um ataque ou não. E se o base64 local codifica alguns valores e decodifica-los antes que o usa? Seu IDS é não vai pegar isso. E se um usuário quiser postar um trecho de código, ele é detectado como um exploit porque contém SQL? Este é um desperdício de tempo ... Se você realmente precisa de saber se alguém está atacando você, basta instalar alguns IDS em um máquina separada com acesso somente leitura para o tráfego de entrada .. eu digo máquina independente, porque muitos IDS são vulneráveis ??a si mesmos, e só vai piorar a situação.

Use metodologias de programação segura padrão, use consultas SQL paramaterized ou um ORM.

Parece muito trabalho com o bit de e-mail e tudo para mim. Afora isso, eu gosto de correr em sites que eu normalmente usam e tentar encontrar pontos injetáveis ??para que eu possa avisar o administrador sobre isso. Você IP proibir-me por isso?

Sugiro caçar as peças exploráveis-se e desinfecção, quando necessário. Acunetix tem um muito bom programa para isso. Se você não sente vontade de descascar para fora o preço gigante para Acunetix, existem alguns complementos muito bons Firefox chamada XSS Eu e SQL Inject-me que você pode querer olhar em.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top