Ir para conteúdo

POWERED BY:

Arquivado

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

marcosfj1

[Resolvido] Erro de segurança de SQL

Recommended Posts

Bom galera como já faz um tempo eu estou tentando corrigir erros de segurança apontados pelo site blindado, bom em um deles dos varios q nao consegui corrigir hehe....eu pedi mais informaçoes entao o suporte me mando um teste para que eu pudesse ver o erro como ele acontecia.

 

Bem tudo mostra q é pela URL, eu nao sei como corrigir este erro ai queria saber se alguem já viu este erro e sabe me dar uma orientacao de como proceder

 

Warning: include(\'.php) [function.include]: failed to open stream: Arquivo ou diretório não encontrado in /caminho/teste/index.php on line 114

Warning: include(\'.php) [function.include]: failed to open stream: Arquivo ou diretório não encontrado in /caminho/teste/index.php on line 114

Warning: include() [function.include]: Failed opening '\'.php' for inclusion (include_path='.:/usr/share/pear') in /caminho//teste/index.php on line 114

 

Este erro foi gerado qdo digitei na URL: www.meu site.com.br/teste/?l='&categoria='

 

Falam desse diretorio mas eu nao tenho este diretorio em meus arquivos....alguem poderia me ajudar?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça uma verificação com is_file() antes de tentar incluir um arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o arquivo não foi encontrado ue .. você abre as paginas passando o nome delas pro GET ?

 

Hehehe sim nao foi encontrado

 

Entao os parametros eu pego por GET sim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e isso e injection ? :huh:

 

acho que não tem nada haver não

 

você tem que verificar se o arquivo existe pra ai sim incluir .. ^_^

 

 

Entao isso é considerado injection por eles sim...e nao existe arquivo categoria no meu site...existe uma pagina de produto que ela mostra os produto, faz a busca e tal, ai eu acredito q pela aquela entrada na URL causa um erro na pagina de produto, q é aquele erro q mostrei

 

falou

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução está no post #3

 

se tiver dúvidas, poste esse trecho do teu código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom fui atras de ver onde os GETs nao foram tratados, seguindo o erro...ai fui ver algum GET que esteja ligado a categoria já q este foi o teste, assim se eu corrigir ele depois fica facil os outros

 

Entao eu encontrei o lugar onde este GET['categoria'] é jogado na busca....mas pelo q eu vi existe o tratamento, será que precisa fazer mais alguma tratamento?

 

$_GET['categoria'] = addslashes(strip_tags($_GET['categoria']));
	$_GET['marca'] = addslashes(strip_tags($_GET['marca']));

	//

	echo '<div class="marca_bloco">';

	//
	$sql = "SELECT TODA A CONSULTA	WHERE PC.id_produto_categoria = {$_GET['categoria']}";
	$req2 = mysql_query($sql);

 

 

Como pode ver $_GET['categoria'] = addslashes(strip_tags($_GET['categoria'])); antes de ir pro SQL será que precisa mais alguma tratamento?

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

a fonte do problema não está aí.

 

veja os arredores da linha: index.php on line 114, que é qndo você faz o include.

No post #3 eu indiquei a solução.

 

Até agora você está andando em círculos, olhando para o lugar errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não . assim ja reforça , esse $_GET [ categoria ] , e passado String ou Numero ?

 

Cara descobri mas nao entendi hehe...seguinte fui seguindo o erro ai vi q se encontrava numa pagina onde eu fazia o include de outra, a outra pagina tava tudo certo, mas no include eu tive q colocar um @ antes dele

Era aqui q tava o erro:

 

 <td valign="top"><? @include($link.'.php') ?></td>

 

Mas eu nao sei pra que ser este @ apenas coloquei pq segui o padrao do antigo programador aqui q colocou em uma outra parte...mas resolveu tentei causa novamente o erro e nao apareceu mais

 

você sabe o pq deste @?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

a fonte do problema não está aí.

 

veja os arredores da linha: index.php on line 114, que é qndo você faz o include.

No post #3 eu indiquei a solução.

 

Até agora você está andando em círculos, olhando para o lugar errado.

 

Cara nao estou ignorando suas resposta, mas é q elas nao consigo aplicar, você me fala pra usar uma função is_file() mas nao sabia nem onde colocar, é mto complicado pegar o codigo pronto de outro programador e conseguir arrumar, ainda mais que nao tenho mta experiencia, e você tava dando respostas curtas e grossas entao nao tinha como eu fazer...qdo o erro estava na linha 114 eu vi o include eu ia para a pagina do include e nao achava nada de erro la relacionado a SQL...tanto q postei aqui o jeito que eu tava tratando pra ver se tinha algo errado

 

Entao se em algum momento eu dei a impressao de estar ignorando as suas respostas peço desculpas, mas foi mais pq suas respostas nao eram claras o suficiente pra mim

 

@ , serve pra esconder o erro , o William Bruno postou uma das possiveis soluçoes acima

você não viu ?

 

Bom quanto a isso de esconder o erro nao me preocupa mto nao, na verdade o proprio site blindado no relatorio recomenda esconder erros

 

Porem vou estudar mais um pouco sobre a funcao q o William Bruno passou pra quem sabe nao precisa mais esconder o erro e sim arrumar

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites
mas foi mais pq suas respostas nao eram claras o suficiente pra mim

bastava ter avisado.

 

veja:

<? @include($link.'.php') ?></td>

o correto seria:

 

<?php
 if( is_file( $link.'.php' ) )
   include $link.'.php';
 else
   echo 'impossível incluir o arquivo';
?>
</td>

 

esconder os erros, é diferente de tratá-los da forma correta.

o @ é um supressor, evite usar, prefira corrigir do que apenas ignorar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara deu certo segui o que me passou da função, e ficou da mesma forma nao apareceu mais erro nem atrapalhou nada no site

Só mudei a frase para vazia pra nao aparecer nada mesmo

 

Acredito q com isso vá resolver esta questao do site blindado

 

Agora só falta uma que tbm parece erro de diretorio olha:

 

<br />

<b>Warning</b>: file(/home/caminho/imagem/semimagem.jpg) [<a href='function.file'>function.file</a>]: failed to open stream: No such file or directory in <b>/home/caminho/imagem.php</b> on line <b>153</b><br />

<br />

<b>Warning</b>: join() [<a href='function.join'>function.join</a>]: Invalid arguments passed in <b>/home/caminho/imagem.php</b> on line <b>153</b><br />

 

 

Esta pagina imagem.php parece q o outro programador nao fez nada apenas inclui ela no projeto, ela é uma classe pronta...seguindo a linha do erro eu cai nesse codigo:

 

if (!$image_type_arr = @getimagesize($filename))
{
header('Content-type: image/png');
if(@$_GET['noerror'])
{
	exit;
} else {	
	echo (join('', file( $site_config['document_root'].$image_error )));
	exit;
}
} 

 

Alguma ideia do que pode ser? já ouviu falar desta classe de imagem?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

é o mesmo erro. Não tá achando o arquivo.

 

troque:

$site_config['document_root']

por um caminho absoluto que realmente chegue onde precisa.

 

se no caso, você não quer mostrar nada, era so retirar o else:

<?php
 if( is_file( $link.'.php' ) )
   include $link.'.php';
?>
</td>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A cara entao acho q este ai vai continuar dando erro, pq no caso a raiz do meu FPT é o public_html, ai ao entrar la tem uma pagina inicial falando q em breve terá uma nova loja e tal....ai dentro tem uma pagina teste q ai sim tem todos os arquivos do site, entao no caso eu nao posso mudar pois o site ainda esta em fase de testes, este erro é provavel q sai sozinho qdo jogar os arquivos na raiz mesmo do FTP

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então o melhor, era que esse caminho fosse dinamico.

 

veja:

http://forum.imasters.com.br/topic/353635-classe-mysqli-mais-uma/

 

no init.php do Fabyo, tem uma constante: 'BASE_PATH', que resolve essa situação.

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.