
Vulnerabilidade Em Query String - Php
#1
Posted 09/03/2004, 19:56
<? if(isset($area)) include($area.".php"); else include("br-principal.php"); ?> , esse codigo permite a famosa "SQL injection" que eh: /index.php?area=http://....
entao eu gostaria de saber como eu ficaria ainda com esse index.php?area= mas nao dando ao usuario malicioso em dar index.php?area=http://...
gostaria de uma ajuda
#2
Posted 09/03/2004, 21:11
(agora eu to sem tempo, se der depois eu posto um exemplo ok?)
Abraços
#3
thiagorsl
Posted 09/03/2004, 21:16
#4
Posted 10/03/2004, 08:31

Simples... Basta fazer um switch... Veja:
<?php
$area = $_GET["area"];
switch ($area) {
case "intro":
include_once ("default.php");
break;
default:
include_once ("404.php");
break;
}
?>
Faça uns testes e veja que, se $area == "intro", a página incluída será "default.php", caso $area != "intro", ou seja, qualquer coisa... Será incluída 404.php

#5
Posted 11/03/2004, 10:44
num vi nenhum comando SQL ae...

#6
Posted 20/03/2004, 20:28
#7
Posted 20/03/2004, 22:12
$simbolos = array("/", ":", " ", "'", ",");//especifica os caracteres especiais não aceitos $area = str_replace($simbolos, "", $area); //Retira os arateres especiais definidos por você. if(isset($area)) include($area.".php"); else include("br-principal.php");
#8
Posted 21/03/2004, 05:24
SQL Injection, literalmente falando, é o ato de "injetar" algum código SQL não esperado numa aplicação com fins não muito amigáveis.desculpe a minha ignorancia mas oq isso tem a v com SQL Injection ?
num vi nenhum comando SQL ae...
Esse termo ultimamente vem sendo usado para descrever tipos de inclusões de arquivos que estão fora do servidor.
Caso queira ler um pouco mais sobre isso acesse http://www.securityf...om/infocus/1768
#9
Posted 21/03/2004, 06:18
#10
Posted 21/03/2004, 15:18
=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Blog PHPClube
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Bookmarks
#11
thiagorsl
Posted 21/03/2004, 15:34
<? if(isset($area)) include($area.".php"); else include("br-principal.php"); ?>
deixe ele assim
<?
if(isset($area)) {
if ((eregi("http://",$area))==0){
include($area.".php");
} else {
include("erro.php");
}
} else {
include("br-principal.php");
}
?>
ai vc faz uma pagiana erro.php que ela abrira quando o kra tentar isso
fui --------------- >


Edição feita por: thiagorsl, 21/03/2004, 15:35.
#12
Posted 21/03/2004, 18:55
como eu faço esse esquema de: file_exists() ?Na verdade o nome seria "PHP Injection" já que o código "injetado" é em PHP ... a maneira mais simples de resolver o problema é utilizando file_exists(). Já que nos includes as páginas são locais ... no caso de URLs file_exists() vai retornar false!
#13
thiagorsl
Posted 21/03/2004, 19:14
if (isset($area)){
$pagina="$area.php";
if ((file_exists($pagina))==true){
include("$pagina");
} else {
include("erro.php");
}
} else {
include("principal.php");
}
lembrando que tem que existir o erro.php que é a pagina de erro
Edição feita por: thiagorsl, 21/03/2004, 19:16.
#14
Posted 25/03/2004, 01:07
Po cara, valeu !assim se usa o file exists
if (isset($area)){
$pagina="$area.php";
if ((file_exists($pagina))==true){
include("$pagina");
} else {
include("erro.php");
}
} else {
include("principal.php");
}
lembrando que tem que existir o erro.php que é a pagina de erro
Eu nem durmi de noite pensando que eu tinha que fazer um switch do tamanho do mundo.
o file_exists() resolveu o problema !
#15
Posted 25/03/2004, 01:14
http://forum.wmonlin...ndpost&p=305165
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)