Tag: Seguridad
Borrar archivos desde el Terminal y enviarlos a la papelera
by kaizo on Ene.24, 2009, under GNU/Linux, MacOS X, Trucos
En el comentario de Joan sobre mi post anterior salió un tema delicado para los que tiramos mucho de Terminal (o línea de comandos), el hecho de hacer rm -rf y…cargarla. No perdona, si te has equivocado y no tienes copia de seguridad ya puedes irte despidiendo de tus queridos datos.
Esto me pasó muchas veces con Ubuntu, así que decidí arreglarlo creando un alias en el archivo ~/.bashrc. El alias hace que al borrar el archivo, en vez de ser borrado de verdad, se mueva a la papelera.
alias del='mv -t ~/.local/share/Trash/files --backup=t'
Depende de la distribución que uses, el directorio de la papelera será ~/.Trash o el del ejemplo. Antes de la versión 8.04, Ubuntu usaba el ~/.Trash
En Leopard esto ya no funcionaba, ya que el comando mv no acepta el parámetro -t, así que me tocó buscar alguna otra solución. Buscando encontré la aplicación rmtrash (puedes encontrarla aquí). No hay más que bajar el paquete con nombre rmtrash.tar.gz, descomprimirlo y seguir los pasos del archivo de texto. Yo decidí instalarlo de otra manera:
cd rmtrash/ mv rmtrash del sudo mv del /usr/bin/del
Así seguía teniendo el nombre al cual ya estaba acostumbrado, y al moverlo a /usr/bin conseguimos tenerlo en el PATH.
Una cosa más, su sintaxis (en los dos casos) es la siguiente:
del fichero
Donde fichero puede ser un archivo o un directorio (no se debe poner -rf)
Cómo borrar seguramente archivos desde el terminal
by kaizo on Ene.24, 2009, under GNU/Linux, MacOS X, Seguridad, Trucos
Al pasarme a Leopard después de la semi-reciente adquisición de un MacBook, descubrí una opción muy útil del Finder, borrar archivos seguramente.
¿Qué es ésto exactamente? En un borrado normal, el sistema simplemente borra las referencias al fichero. El fichero sigue existiendo tal y como lo conociamos nosotros, pero no se puede tener un acceso normal a él, y el sistema operativo puede que acabe sobreescribiéndolo si necesita ese espacio de disco. El borrado seguro, en cambio, escribe información aleatoria encima de los datos del fichero existentes antes de eliminar la referencia.
Una vez visto que el Finder podía hacerlo, me pregunté si sería posible encontrar alguna manera de hacerlo directamente desde la línea de comandos. Descubrí un paquete para los sistemas GNU/Linux que se llama srm. Por suerte Leopard lo lleva instalado de serie. Así que hacer un borrado seguro desde terminal es tan fácil como hacer:
srm nombre_archivo
Tiene las mismas opciones que rm, así que también es posible eliminar directorios de manera segura escribiendo:
srm -rf directorioPresentación del CAAS-8
by dGil on Dic.03, 2008, under Algoritmo, Programación, Pynigma, Python, Seguridad
Como ya hemos comentado en anteriores ocasiones en éste blog, vamos a diseñar un programa llamado Pynigma programado en Python que encriptará y (esperamos) desencriptará usando un algoritmo propio. Bueno, como es lógico, primero tenemos que tener el algoritmo. Así que me he puesto manos a la obra y ya tenemos la primera versión del CAAS-8. El nombre está diseñado por Kaizo y son las siglas de Casadevall Awesome Algorithm System (Casadevall es mi apellido) y, como os podéis imaginar, es una coña. Pero como parece muy pro, nos da más credibilidad, así que lo hemos cogido como válido :P.
Cómo la mayoría de algoritmos, el ocho del nombre son los bits con los que trabajamos (bloques de 2 Bytes) y ciframos con una palabra de 32 bits.
En el siguiente post espero poderos enseñar ya de forma detallada sobre el algoritmo. De todas formas aclarar que nosotros somos estudiantes de ingeniería, y el objetivo de este proyecto no es otro que aprender. Si al final sale algo útil, pues nos alegraremos.
Ahora mismo estamos intentando corregir algunos problemas, pero creo que no podremos –al menos esta versión- y como el objetivo es ir aprendiendo, está claro que la primera versión no será la definitiva ¡ni mucho menos!
Funciones en PHP para evitar ejecución de código HTML
by dGil on Nov.25, 2008, under PHP, Programación, Seguridad
Durante el desarrollo de Filmo (más adelante ya os hablaré sobre éste proyecto) me he encontrado con un problema habitual en el uso de formularios html.
Normalmente nos vemos necesitados de usar formularios para que el usuario pueda introducir información en el sistema. Dicha información se suele guardar en una base de datos. Si no somos precavidos, y guardamos tal como el usuario introduce la información en la base de datos, pueden surgir problemas de seguridad graves. Dependiendo de como se haya programado (entenderemos que mal programado), incluso podría haber ejecución de código. Es, por lo tanto, necesario un control por parte del sistema para que no suceda esto.
PHP nos ofrece distintas funciones ya implementadas para tratar con el código HTML. A continuación os hablaré de cada una y cual escogí yo.
- htmlentities: Transforma cualquier caracter en html si exisite su correspondencia. Osea, traduce <, >, ‘, “, &, á, é, í, ó, ú, etc. con sus correspondientes html.
- htmlspecialchars: Funciona igual que htmlentities, sólo que htmlspecialchars funciona con UTF8, por lo tanto, no hace la traducción a carácteres html de letras acentuadas, con diéresis, etc.
- strip_tags: Suprime todo lo que está entre “<, >” exceptuando las etiquetas HTML que le indiquemos.
En mi caso en particular, tenia el siguiente problema: en la base de datos había declarado una variable de tipo string con un limite de 11 carácteres. Si usaba una de las dos primeras funciones suponiendo que un usuario insertaba en el formulario:
<b>hola</b>
Que son 11 carácteres, como se traducía a html teníamos:
<b>hola</b>
Cómo podemos observar, al traducirlo a HTML tenemos muchas más letras, y por lo tanto, la base de datos nos devolvería un error conforme no se podría hacer la inserción por tamaño demasiado grande.
Es aquí donde entra strip_tags. Esta función, nos permite eliminar como ya hemos comentado, las entidades HTML que nosotros no permitamos (por defecto se borran todas). Esto nos permitiría eliminar todas aquellas que pudieran suponer un peligro, o remodelar el sitio web (como poner <li> o <div> en un lugar indevido).
Por lo tanto, la mejor opción es sin duda usar strip_tags. Como ya hemos dicho, borra todos los tags html, y por lo tanto en el ejemplo comentado, no tendriamos un overflow en la base de datos. Así nos quedaría:
- Código original:
<b>¡hola!</b>
- Usando strip_tags:
¡hola!
De todas formas, éste es un ejemplo muy concreto. Si no tubieramos el límite del tamaño, quizás seria suficiente con htmlspecialchars. Sin duda, strip_tags es la posibilidad más restrictiva.