Foros del Web » Programando para Internet » PHP »

Son malos los nombres largos de variables?.

Estas en el tema de Son malos los nombres largos de variables?. en el foro de PHP en Foros del Web. Feliz semana. Estoy equivocado al pensar que solo pueden hackearme si tienen los nombres de mis variables?. Por ejemplo las tipicas: $user/$usuario $password/$clave **************** Lo ...
  #1 (permalink)  
Antiguo 03/02/2004, 09:33
 
Fecha de Ingreso: enero-2004
Mensajes: 89
Antigüedad: 13 años, 11 meses
Puntos: 0
Desacuerdo Son malos los nombres largos de variables?.

Feliz semana.

Estoy equivocado al pensar que solo pueden hackearme si tienen los nombres de mis variables?.

Por ejemplo las tipicas:

$user/$usuario
$password/$clave

****************

Lo que sucede es que para "prevenir" - "logicas" de atacadores, yo hago toda la pagina, y luego le doy CTRL + H (Con wordpad), y tonces cambio todas las variables $usuario a por ejemplo:

$ser_vivo_enelinteriorde_misistema

O por ejemplo $pasword la cambio por $clavesecreta_de_estapersona

********************************

Es muy estupido pensar que esto ayuda a la seguridad?
Se relentiza PHP con nombres de variables largas?
Aumenta la INSEGURIDAD al iniciar vars largas?

PD:
Cuando mis esfuerzos por "SEGURIDAD" han dejado de serlo y se han convertido en paranoia absurda?...

Es que... Incluso le cambio los nombres a los files requeridos por invisionboard.

Por ejemplo:

require ROOT_PATH."sources/functions.php";

Yo lo cambio por:

require ROOT_PATH."sources/nombrecambiado_por_mi.php";

NOTA: Se que tengo 0% de probabilidades de que un hacker pierda su valioso tiempo en mi web, pero quisiera algun día poder tener una web interesante, o poder ser el webmaster de la web de una empresa seria a la cual darle una buena "proteccion", por eso bobeo tanto desde ahora con esto de la seguridad, para ir aprendiendo.

MUCHAS GRACIAS.
  #2 (permalink)  
Antiguo 03/02/2004, 10:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Los nombres largos en definiciones de variables supongo que algo más de recursos consumirá .. pero, seguro que tienes mucho más por donde optimizar tu código/algoritmos que lo que te puedas ahorrar en recursos por este tema concreto.

Cita:
Lo que sucede es que para "prevenir" - "logicas" de atacadores, yo hago toda la pagina, y luego le doy CTRL + H (Con wordpad), y tonces cambio todas las variables $usuario a por ejemplo:

$ser_vivo_enelinteriorde_misistema

O por ejemplo $pasword la cambio por $clavesecreta_de_estapersona
Para eso ya tienes aplicaciones tipo "ofuscadores" como:

POBS
http://pobs.mywalhalla.net/


Cita:
NOTA: Se que tengo 0% de probabilidades de que un hacker pierda su valioso tiempo en mi web, pero quisiera algun día poder tener una web interesante, o poder ser el webmaster de la web de una empresa seria a la cual darle una buena "proteccion", por eso bobeo tanto desde ahora con esto de la seguridad, para ir aprendiendo.
Si tienes un sistema seguro, no sólo de tu lógica de programación y correcto uso del lenguaje de programación que uses .. sino de configuración de tus servidores (PHP por ejemplo es muyyy sensible a la configuración para que sea más "seguro" o no y esto influye a su vez en que te forzará a programar de forma "mas segura") .. y demás, no tendrías por qué ir cambiando el nombre a los archivos u "ofuscar" el código fuente.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 03/02/2004, 10:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Veamos, el que tengan o no el nombre de las variables no influye. Bueno, si influyen. Pero para saberlas, o bien conocen tu codigo, o bien las adivinan al azar.

O la que si es un fallo, que sea tu propio script el que les de el nombre. Eso puede pasar si tienes activado los mensajes de error y llaman a tu script de tal forma que generan un error. Por eso es importante desactivar los mensajes de error en entornos de produccion.

Mas que del nombre de las variables, lo que debes hacer es verificar el origen de los valores y su validez. Para eso es una buena ayuda el register_globals a OFF. De esta forma las variables externas al script solo son accesibles desde los arrays superglobales ($_GET, $_POST, ...). Asi estas seguro que cuando haces:
Código PHP:
echo $variable
$variable es una variable que has creado tu en el script, y no viene de una peticion "adulterada" tipo pagina.php?variable=valor_malo.

Y valida que todos los valores pertenezcan al rango de valores que deseas. Y gestiona los errores que puedan provocar valores que no existen. Por ejemplo, si a tu script lo llamas de la forma pagina.php?id=12, siendo id un numero entero positivo:
Código PHP:
$par_id=$_GET['id'];  // sabemos que id viene por URL. No aceptamos que venga por POST, COOKIE o SESSION
settype($par_id,'integer');  // mira el manual, pero lo que hace es forzar a que $par_id sea un entero
// aqui se supone que $par_id es un entero
// falta ver que sea positivo
if (0>$par_id$par_id=0;  // en este caso 0 es un valor valido. Puede que en tu caso sea el 1 el primer valor valido

// en este punto sabemos que $par_id es un entero positivo o 0
// pero puede que en nuestra tabla no exista un registro con ese id
$SQL="SELECT * FROM tabla WHERE id=$par_id"// podemos usar $par_id sin miedo, sabemos que es un entero positivo
$result=mysql_query($SQL,$link) or error_mysql($SQL,__FILE__,__LINE__,$link);
// para controlar los errores de mysql, usas una funcion que dependiendo de la configuracion muestra el mensaje, lo guarda en un log o no muestra nada
if (0==mysql_num_rows($result)) {
// ahora si mostramos el registro
} else {
// el id no existe, ¿intento de asalto? ¿link erroneo? ¿error al teclear?
// solo tu sabes que hacer en este caso: mostrar un mensaje, almacenar datos, enviarte un email de aviso

Como ves, lo que se puede hacer con un par de lineas, gracias a la "paranoia" de la seguridad el codigo a crecido (este ejemplo tampoco es 100% seguro, lo he escrito de cabeza).

Tambien es conveniente inicializar las variables del script. Prueba este script con register_globals a ON y llamandolo pagina.php?ok=1&pass=hola:
Código PHP:
<?php
if ('clave_secreta'==$_GET['pass']) {
 
$ok=true;
}

if (
$ok) {
  echo 
"mi informacion super secreta";
} else {
  echo 
"no,no, eso no se hace. Kaka";
}
?>
Y ahora este otro parecido, llamandolo igual:
Código PHP:
<?php
$ok
=false;
if (
'clave_secreta'==$_GET['pass']) {
 
$ok=true;
}

if (
$ok) {
  echo 
"mi informacion super secreta";
} else {
  echo 
"no,no, eso no se hace. Kaka";
}
?>
Con una simple inicializacion ya has solucionado el problema (tambien podrias haber puesto un else al primer if). Tambien con esto solucionas el problema de los nombres de variables del script. Como inicializas con un valor, pisas cualquier valor maligno que pueda haber intentado pasar el atacante.

Suerte.

PD: El problema que tienen los prefabricados que dan codigo fuente, es que el atacante tiene conocimiento de toda la estructura de la aplicacion. Y en caso de agujero de seguridad del prefabricado, no hay quien te salve (estate siempre actualizado a la ultima version con los parches de seguridad).

PD2: Por supuesto, esta es mi opinion. No me considero un experto en seguridad (ni ha nivel de configuracion del servidor ni de codigo). Asi que bienvenidas todas las opiniones/experiencias.

PD3: Que alguien tenga mania persecutoria, no quiere decir que no le sigan
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 03/02/2004 a las 10:16
  #4 (permalink)  
Antiguo 03/02/2004, 10:29
 
Fecha de Ingreso: enero-2004
Mensajes: 89
Antigüedad: 13 años, 11 meses
Puntos: 0
Muchas gracias.

En otras palabras me has dicho:

"No seas flojo, ni evadas la "REAL SEGURIDAD" aprende ha hacer las cosas con SEGURIDAD ALTA."

Pero es que en el file que me indicaron descargar, (no recuerdo el URL):

"vulnerabilidades_php.zip"

Di Biase Jos

Dice que los hackers utilizan los "includes" para hackear las webs.

asi que yo IMAGINE:

Si cambio los nombres de esos files, el Hacker no podra hacerlo.

Gracias Cluster.
Sigo esforzandome, pero hago preguntas por si acaso es util mis especulaciones.
  #5 (permalink)  
Antiguo 03/02/2004, 10:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Di Biase Jos

Cita:
Dice que los hackers utilizan los "includes" para hackear las webs.

asi que yo IMAGINE:

Si cambio los nombres de esos files, el Hacker no podra hacerlo.
Ves .. aquí ya estás "parcheando" un problema de seguridad dandole una solución simple ..

En ese caso particular hay que averigüar por qué te pueden hacer un "include" y llamar a un archivo que NO es el que corresponde ..

Te pongo un simple ejemplo

Si tu haces:

Código PHP:
<?
include($_GET['archivo']);
?>
Si llamo a ese script via: nose.php?archivo=pagina.tal

voy a poder cambiar el archivo que llame e incluir el que quiera .. ejemplo el tipico: conexion.php config.php y similares ... O peor aún dependiendo de la configuración de ese servidor (PHP principalmente) podría llegar hasta el "raiz" o el etc/passwords y similares archivos ...

pero si hago algo tipo:

Código PHP:
<?

// array con las páginas (nombre y ruta si procede) que voy aceptar como válidas.
$array_paginas_autorizadas=array("uno.php","dos.php");

// valido el nombre de la página que se pretende incluir ...
if (in_array($GET['include'],$array_paginas_autorizadas)){
   include(
$_GET['archivo']);
} else {
   echo 
"no te pases de listo xD";
}
?>
Con esa simple validación .. ya se está filtrando lo que puede llegar desde "fuera" de tu script y sólo autorizar las páginas que tenga en mi lista de autorizadas (en ese array en el ejemplo).

Cuanto más conozcas el lenguaje que trabajas y el ambiente que trabajas (cliente-servidor) .. veras mejor como solventar problemas de seguridad de ese tipo

Como veras .. la solución (una de tantas) no es tán compleja .. pero requiere de "pensar" un poco por qué suceden las cosas y eso pasa por conocer lo que estás trabajando. (PHP ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 03/02/2004, 12:04
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Malos? bueno como dijo Cluster ... cuanto más largo sean los nombres de variables el consumo de recursos sera mayor, ya que PHP aloja la memoria dinamicamente al crear las variables pero bueno ese es otro tema.

En cuanto al tema de la seguridad, josemi y Cluster te han dado muy buenos consejos, la seguridad no depende integramente del codigo que tu programas, tambien depende de las configuraciones de tu sistema, bien del servidor web, o bien de otro tipo de servidor, pasando por la configuracion de tu PHP que es muy flexible.

Las tecnicas de programacion son muy importantes, el tema de revisar siempre la informacion que contienen las variables, el depurarlas pueden ayudarte muchisimo a que tu script sea mucho mas seguro.

Saludillos!
__________________
Usuario registrado de Linux #288725
  #7 (permalink)  
Antiguo 03/02/2004, 13:42
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Se me olvidaba una maxima: no te fies de nada que venga de fuera del script. Ni parametros de URL, ni campos de formularios, ni nombres de ficheros, ni datos de la base de datos. Porque todo eso es susceptible de manipulacion maligna por parte de los indeseables crackers y lammers. Un claro ejemplo es el que ha puesto Cluster para el include() (que lo mismo que para el include es para un fopen).

No creas que porque has hecho una validacion javascript en tu formulario, eso no asegura que los datos que recibe tu script esten validados. O que el fichero que sube tu usaurio es una inofensiva imagen. Y asi con mas cosas.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 21/04/2005, 13:18
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.942
Antigüedad: 13 años, 10 meses
Puntos: 20
[cita]el depurarlas pueden ayudarte muchisimo a que tu script sea mucho mas seguro[/cita]

Esta validacion "basica" es suficiente en cuanto a las variables?:
Código PHP:
$var=htmlentities(trim($var)) 
Luego vendrian validaciones adicionales...
Código PHP:
if(eregi(...,$var))...
if(!
is_file(...
if(
in_array(... 
Etc...

Pero eso es suficiente para las variables?
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 09:41.