Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fmda

ataques ao meu site, parece que com script

Recommended Posts

estes dias to recebendo ataques ao site, hoje qunado entrei aparece uma janela pop de alert escrito hackeado por blabla, o que posso fazer para parar com isso, é algum problema com meu site, que tipo de problema

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo to sem saber em que pagina que possa ser, eu to achando seria a apgina que o usuario tem acesso, que é onde ele edita seu cadstro no site

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem que ver onde está o código JavaScript. Se estiver no banco de dados, o problema é nesse script mesmo, pois você não validação. Tem que retirar tags por exemplo. Use strip_tags()

 

http://www.php.net/strip_tags

 

 

Se o JavaScript estiver direto na página, aí o hacker está acessando por FTP, provavelmente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria um arquivo chamado antisqlinject.php com o seguinte conteudo.

 

<?php

   function AntiSqlInjection($recebe)
   {
	   // Verifica a configuração de "magic_quotes_gpc".
	   $recebe = get_magic_quotes_gpc() == 0 ? addslashes($recebe) : $recebe;
	   // Limpa as tags HTML.
	   $recebe = strip_tags($recebe);
	   // Isso é o Anti SQL Injection mesmo.
	   $recebe = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|\\\\)/"),
		   "", $recebe);

	   return $recebe;
   }

?>

Faça um include desse arquivo em todas as paginas que recebem dados, seja via GET, POST e etc.

 

E então limpe todas essas entradas, fazendo assim.

 

$mes = AntiSqlInjection($_POST['mes']);
$dia = AntiSqlInjection($_POST['dia']);
$ano = AntiSqlInjection($_POST['ano']);

Fazendo isso você esta descartando injeções de dados no sql.

 

PS : Tem como postar o código fonte do site depois que ele é atacado?

E tambem, o código da pagina em que o cara esta atacando.

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

na pagina ja tem o require_once "../cadastro/db.php"; e dentro deste arquivo tem o antiInjection mas e pra roteger os campos, seria como ?

 

outra coisa, o cara q ta invadindo ele ta pondo no campo de nome um scritp de alert, como retirar isso tbm

Compartilhar este post


Link para o post
Compartilhar em outros sites

fmda, você ainda não entendeu.

Você esta querendo usar a função que enviei na hora em que voce usa os dados vindos de algum formulario e etc.

 

Mas não é recomendado fazer assim.

 

Nas primeiras linhas do seu código, defina todas as variaveis de entrada de dados, e depois use essas variaveis no código.

Exemplo:

 

$nome = AntiSqlInjection($_POST['nome']);

$login = AntiSqlInjection($_POST['login']);

$senha = AntiSqlInjection($_POST['senha']);

$endereco = AntiSqlInjection($_POST['endereco']);

$telefone = AntiSqlInjection($_POST['telefone']);

 

E depois tu sai usando essas variaveis já protegidas.

Entendeu?

 

PS : Isso até ajuda muito, porque depois quando você quer alterar algo, fica mais facil e organizado.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh intendi, eu defini ela com uma variavel e chamo o AntiSqlInjection

 

$nome= AntiSqlInjection($_POST['senha']);

$endereco = AntiSqlInjection($_POST['endereco']);

$telefone = AntiSqlInjection($_POST['telefone']);

$xxxxxx = AntiSqlInjection($_POST['xxxxxx']);

 

ae onde eu possuo: <?php echo $usuario->getNome(); ?> eu mudaria para qual jeito ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

você só precisa tratar inputs do usuario. E não saída de dados.

URL, formularios(q acessarão o banco de dados)..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo, eu vou no meu arquivo e ponho:

 

$nome= AntiSqlInjection($_POST['nome']);

$endereco= AntiSqlInjection($_POST['endereco']);

Agora no meu cmapo textfield tem lá:

 

<?php echo $usuario->getNome(); ?>

<?php echo $usuario->getEndereco(); ?>

estas 2 linhas acima eu nao modifico nada ????

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nao estou intendendo, tem como me mostrar visualmente como fazer, vou postar aki como ta lá, ae me mostrar eomo editar, sou iniciante num to sabendo direito

 

aqui é oq ue tem no inicio do meu arquivo

$usuario->setId($sessao->getIdLogin());

$usuario->setNome($_POST['nome']);

$usuario->setSobrenome($_POST['sobrenome']);

aqui é onde o usuario poe seus dados para mostrar

<input type="text" name="nome" size="30" value="<?php echo $usuario->getNome(); ?>" >

<input type="text" name="nome" size="30" value="<?php echo $usuario->getSobrenome(); ?>" >

como devo proceder pra proteger estes campos, que é onde sao injetado o que num deve, dizendo assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

$mes = $_POST["mes"];
$dia = $_POST["dia"];
$ano = $_POST["ano"];

$aniversario = "$ano-$mes-$dia";

$usuario->setId($sessao->getIdLogin());
$usuario->setNome($_POST['nome']);
$usuario->setSobrenome($_POST['sobrenome']);
$usuario->setNick($_POST['nick']);
$usuario->setAniversario($aniversario);
$usuario->setNacionalidade($_POST['nacionalidade']);
$usuario->setCidadeestado($_POST['cidadeestado']);

Tu nao tem essa parte no teu código?

Então, olha as variaveis ali que recebem dados de formulários por POST.

 

$mes = $_POST["mes"];

$dia = $_POST["dia"];

$ano = $_POST["ano"];

 

Faz nessas varaveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao deve ficar desta forma:

 

$mes = AntiSqlInjection($_POST['mes']);

$dia = AntiSqlInjection($_POST['dia']);

$ano = AntiSqlInjection($_POST['ano']);

$nome = AntiSqlInjection($_POST['nome']);

$sobrenome = AntiSqlInjection($_POST['sobrenome']);

$idade = AntiSqlInjection($_POST['idade']);

.

.

.

.

Nesta parte deixo como esta:

 

$usuario->setId($sessao->getIdLogin());

$usuario->setNome($_POST['nome']);

$usuario->setSobrenome($_POST['sobrenome']);

$usuario->setIdade($_POST['idade']);

Aqui onde usuario tem acesso, tbm deixo como está:

 

<input type="text" name="nome" size="30" value="<?php echo $usuario->getNome(); ?>" >

<input type="text" name="sobrenome" size="30" value="<?php echo $usuario->getSobrenome(); ?>" >

<input type="text" name="idade" size="30" value="<?php echo $usuario->getIdade(); ?>" >

ae ou seja, todos meus campos estrão protegidos ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

está criando muita bagunça

 

1. conseguiu detectar de onde vem os "ataques" ?

 

primeiramente, corrija o ponto crítico e depois, com calma vasculhe os seus scripts em busca de brechas, pois se fizer assim desse modo, no final criará um monte de gambiarras que trarão dores de cabeça mais pra frente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas so to precissando disso, o outro erro é de script ainda foi procurar saber como arrumar, eu to qeurendo saber é como proteger pra evitar o injection, o que devo fazer neste arquivo ae q passei, apenas isso

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.