Dos primos luchan contra la tecnología

Aprendizaje y formación en informática profesional mediante videotutoriales

Enlace a aplicación como root

En ocasiones queremos que una aplicación se ejecute con los permisos de root para que pueda escribir en los directorios con los que trabaja el programa como por ejemplo  un editor de páginas web en el DocumentRoot de Apache.

Una manera fácil de hacer esto puede ser crear un “enlace a aplicación” comúnmente conocido como “acceso directo” que se ejecute como root y que pida la contraseña de root.

Esto se puede hacer como usuario normal sin privilegios de superusuario. Para ello debemos hacer:

  • Botón derecho en el escritorio: Crear nuevo->Archivo->Enlace a aplicación.
  • Ponemos nombre al enlace y la ruta del ejecutable.
  • En la pestaña “Aplicación” hacemos clic en “Opciones avanzadas”
  • Marcamos la casilla “Ejecutar como otro usuario” y en el campo de texto escribimos “root”

PHP: Desactivar Magic Quotes

“Comillas Mágicas” es un mecanismo de seguridad de PHP que escapa de manera automática comillas dobles y sencillas y barras invertidas con barras invertidas para evitar técnicas de inyección SQL.

Este sistema nació para evitar que los novatos escriban código inseguro pero ha terminado convirtiéndose en una característica tan molesta que actualmentesuele venir deshabilitada por defecto. Incluso los desarrolladores de PHP desaconsejan su uso.

El problema principal se presenta cuando ejecutamos nuestros scripts en diferentes servidores que pueden tener activado o no este mecanismo, y sobre todo si no tenemos acceso a la configuración del sistema como es el caso de los servidores de hosting compartidos.

PHP tiene dos funciones que escapan y desescapan cadenas que son addslashes() y stripslahes(). Si hemos escrito nuestro script en una máquina con Magic Quotes deshabilitadas, lo lógico es que escapemos nosotros mismos las variables con addslashes. Ese mismo código en un servidor con Magic Quotes activado nos daría este resultado:

$_POST['poblacion'] = "L\'alcudia";
echo addslashes($_POST['poblacion']); //escribiría "L\\\'alcudia".
Por otra parte, si no hubiésemos utilizado addslashes() confiando en Magic Quotes, en un servidor sin este mecanismo nos permitiría hacer un INSERT en una base de datos sin escapar las comillas, lo que normalmente causaría error, o algo mucho peor como una inyección SQL.

En primer lugar debemos deshabilitar esta característica en la configuración de PHP editando php.ini.

magic_quotes_gpc = Off En segundo lugar escribiremos una función para recoger las variables de formulario y las escape en caso necesario inluyéndola en nuestro script con un require(). Para detectar el estado de la configuración de Magic Quotes utilizaremos la función get_magic_quotes_gpc(). Un ejemplo podría ser:

function getFormVars($request_vars)
{
$form_vars = array();
while (list($key, $value) = each($request_vars)){
if (!get_magic_quotes_gpc()){
$var_text = addslashes($value);
}else{
$var_text = $value;
}
$form_vars[$key] = $var_text;
}
return $form_vars;
}
A esta función le pasaremos como argumento $_POST, $_GET, $COOKIE o $_REQUEST y devolverá una matriz asociativa con las variables escapadas convenientemente.

Apache alias

Con la directiva Alias podemos tener los documentos web en un directorio fuera del Document Root. Así, es posible tener los documentos web de cada usuario en su home en la carpeta public_html o en cualquier carpeta que queramos.

Lo primero, comprobar que el módulo esta activado en el script de configuración de Apache viendo en la sección de carga de módulos que la línea correspondiente a mod_alias no está comentada.

Añadimos alias de la siguiente forma:
Alias /usuario/fotos/ "/home/usuario/Documents/MisFotos/"
Alias /usuario2/ "home/usuario2/public_html/"

Cuando se escriba en la url del navegador "/usuario/fotos/", nos mostrará el contenido de la carpeta del usuario como si estuvieran en el Document Root.

En el segundo caso la carpeta public_html se comportará como el Document Root.