Foros del Web » Programando para Internet » PHP »

Se bloqueó mi web por codigo inseguro

Estas en el tema de Se bloqueó mi web por codigo inseguro en el foro de PHP en Foros del Web. Que tal, tengo un gran problema, lo que pasa es que utilizo este código en mi index.php para mostrar diferentes módulos en mi página web: ...
  #1 (permalink)  
Antiguo 11/05/2009, 13:26
 
Fecha de Ingreso: septiembre-2008
Ubicación: Chihuahua, México
Mensajes: 88
Antigüedad: 15 años, 7 meses
Puntos: 2
Se bloqueó mi web por codigo inseguro

Que tal, tengo un gran problema, lo que pasa es que utilizo este código en mi index.php para mostrar diferentes módulos en mi página web:

Código PHP:
<?php if($_GET['seccion']){
    include(
"$_GET[seccion]");
}else{
      include(
"home-atp.htm");}
?>
para en los links, mandar llamar las páginas, por ejemplo, asi: index.php?seccion=remates/remates.htm

Mis conocimientos en php son muy básicos, ese código lo usaba la persona que estaba antes que yo cuando editaba la página, asi que lo que yo hice fue seguir utilizandolo. El problema es que brinkster, mi proveedor de hosting, ha bloqueado la página y me dijeron que tuvieron que remover permisos, esto fue lo que me dijeron:
"In order to protect our system it appears the index.php file was being used with injections to attack third party IRC servers"
"Customer's account is being abused on Yuma3. Their index.php file is being abused to inject and execute code to connect to an IRC Server. JTH"
""I have removed permissions from the file being abused on Yuma3. It is a code problem that is allowing scripts to be injected into thier site and using our systems to connect to third party IRC servers. This is not permitted. Actions were taken to protect our systems. "

Me dijeron que tengo que corregir el código de mi index php para que las cosas vuelvan a la normalidad, solo que no se como hacerlo.

Que puedo hacer? encontré un tutorial:
http://www.zonaphp.com/creando-webs-modulares/3/
donde explican como crear una web modular segura y ahi mismo dicen que el tipo de codigo que estoy usando no es la mejor opcion. Desgraciadamente hay muchas cosas que no entiendo y por eso quisiera encontrar una manera rápida para corregir mi problema mientras estudio y entiendo la manera de hacerlo correctamente.

Me urge bastante para mi trabajo, espero alguien pueda ayudarme, estaré muy agradecido!

Última edición por joakinMAX; 11/05/2009 a las 13:33
  #2 (permalink)  
Antiguo 11/05/2009, 15:30
 
Fecha de Ingreso: septiembre-2008
Ubicación: Chihuahua, México
Mensajes: 88
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Se bloqueó mi web por codigo inseguro

He estado investigando un poco, y hace un tiempo un usuario, "David el Grande" me aconsejó utilizar switch en este post: http://www.forosdelweb.com/f18/error-codigo-php-678491/ estoy tratando de corregir mi problema de esa manera, solo que tengo muchas páginas y en diferentes carpetas como para colocar tantos case dentro del switch, de que manera puedo optimizar el código que me pasó David para adaptarlo a mis necesidades?
Código PHP:
switch ($_GET['seccion']) {
    case 
'portada':
    case 
'otro':
    case 
'mas':
        include 
$_GET['seccion'] . '.php';
        break;
    default:
        include 
'home.php';

Por favor, ayuda!
  #3 (permalink)  
Antiguo 11/05/2009, 16:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Se bloqueó mi web por codigo inseguro

pues puedes verificar que el archivo sea legal... osea, que este en una carpeta permitida

Código PHP:
$seccion $_GET['seccion'];

if (
preg_match('/^(secciones|carpeta1|carpeta2|foo|bar|candy|etc)\//'$seccion))
{
  
// OK

la idea es esta:

suponiendo que tus includes los tienes en carpetas, debe ser fiable... ¿como??

que todos los includes estén en secciones/ y con eso basta...

obviamente los uploads, deben estar en otra carpeta fuera de secciones/

si lo analizas un poco, es muy simple la manera de controlar esto...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 11/05/2009, 16:09
 
Fecha de Ingreso: septiembre-2008
Ubicación: Chihuahua, México
Mensajes: 88
Antigüedad: 15 años, 7 meses
Puntos: 2
Ahora encontré un código en esta página http://www.programacionweb.net/artic...iculo/?num=536
y le hice unas modificaciones:
Código PHP:
<?php
// Web Modular Simple | By alienmaster <[email protected]> - http://4cosas.com
 
 
$_GET['seccion'] = htmlspecialchars($_GET['seccion']);
 
$_GET['seccion'] = trim($_GET['seccion']);
 if(!
$_GET['seccion']){
    include(
"home-atp.htm");
 }else{
     
$file $_GET['seccion'].".htm";
    if(
file_exists($file)){
        include(
$file);
    }else{
        echo 
"La seccion a la cual intenta acceder no existe.";
    }
 }

?>
quité una parte donde maneja una ruta porque mis páginas estan en diferentes carpetas, solo me faltaría hacer esta corrección a los links, en lugar de poner:

index.php?seccion=remates/remates.htm
pondria
index.php?seccion=remates/remates

Hay alguna manera de agregar algo al código para que le quite los 4 últimos caracteres a lo que se escribe en la barra de direcciones y lo deje sin la extensión, para no tener que modificar todos los links de mis páginas?

Mi pregunta es, es esto más seguro? me lo rechazará mi servidor de brinkster? Esto me ayuda o sigo en la misma situación? Alguien conoce otra alternativa para no tener que hacer tantas modificaciones? hay más de 100 páginas en mi sitio, por eso no puedo ponerme a editar todo desde cero.

Gracias de antemano, y mil disculpas si escribí alguna incoherencia en este post pero estoy desesperado

que de

Cita:
Iniciado por pateketrueke Ver Mensaje
pues puedes verificar que el archivo sea legal... osea, que este en una carpeta permitida

Código PHP:
$seccion $_GET['seccion'];

if (
preg_match('/^(secciones|carpeta1|carpeta2|foo|bar|candy|etc)\//'$seccion))
{
  
// OK

la idea es esta:

suponiendo que tus includes los tienes en carpetas, debe ser fiable... ¿como??

que todos los includes estén en secciones/ y con eso basta...

obviamente los uploads, deben estar en otra carpeta fuera de secciones/

si lo analizas un poco, es muy simple la manera de controlar esto...
Gracias por contestar pateketrueke! ya estaba perdiendo las esperanzas.

Como me dices tengo todos mis includes dentro de diferentes carpetas, una con el nombre de cada sección y en total son 15, solo que no entiendo bien la parte de codigo que me pusiste, en donde tendria que colocarlo?

Como ya lo mencioné antes, no se mucho de php, lo poco que manejo es con códigos que voy copiando de todos lados, trato de analizarlos pero no siempre le entiendo a todo. Me hace falta un buen curso para dominar por lo menos lo básico.

Te agradezco si me explicas con un poco más de detalle, gracias!

Otra cosa, que opinas de lo que coloqué en la respuesta anterior?, eso de if file_exists puede ayudarme en algo?

Última edición por GatorV; 11/05/2009 a las 17:35
  #5 (permalink)  
Antiguo 12/05/2009, 12:49
 
Fecha de Ingreso: septiembre-2008
Ubicación: Chihuahua, México
Mensajes: 88
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: Se bloqueó mi web por codigo inseguro

Bueno, hasta ahora solo he agregado este código a mi index.php, lo subi al servidor y funciona:
Código PHP:
<?php
// Web Modular Simple | By alienmaster <[email protected]> - http://4cosas.com
 
$carpeta "";//carpeta donde tengas los files a incluir, si es en el mismo directorio dejar en blanco.
 
$_GET['seccion'] = htmlspecialchars($_GET['seccion']);
 
$_GET['seccion'] = trim($_GET['seccion']);
 if(!
$_GET['seccion']){
    include(
$carpeta."home.htm");
 }else{
     
$file $carpeta.$_GET['seccion'];
    if(
file_exists($file)){
        include(
$file);
    }else{
        echo 
"La seccion a la cual intenta acceder no existe o esta en construccion.";
    }
 }

?>
Mis dudas son, Que diferencia hay en este código y el que usaba anteriormente? Con esto he arreglado el problema de seguridad del que me hablaron los de brinkster? (lo que mencioné al principio de este tema).

Nuevamente, si algun conocedor pudiera checar este código y ayudarme.

Gracias de antemano.
  #6 (permalink)  
Antiguo 12/05/2009, 15:15
Avatar de SCY-FOX  
Fecha de Ingreso: septiembre-2007
Ubicación: Chile
Mensajes: 139
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Se bloqueó mi web por codigo inseguro

otra seguridad que recomiendo es usar

Código PHP:
if (isset($_GET['seccion'])) {

 
$seccion mysql_real_escape_string($_GET['seccion']);

Y despues hacer un switch...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:07.