Foros del Web » Programando para Internet » PHP »

¿Cómo cifro una URL?

Estas en el tema de ¿Cómo cifro una URL? en el foro de PHP en Foros del Web. Código PHP: <?php url :: $P  =  $_GET [ p ]; class  url {     public static  $P ;     public static  $getVars =array();     public static  $fileRequired ;     public static function  getPage ...
  #1 (permalink)  
Antiguo 05/07/2009, 20:12
 
Fecha de Ingreso: septiembre-2006
Mensajes: 127
Antigüedad: 18 años, 1 mes
Puntos: 5
¿Cómo cifro una URL?

Código PHP:
<?php

url
::$P $_GET[p];
class 
url
{
    public static 
$P;
    public static 
$getVars=array();
    public static 
$fileRequired;
    public static function 
getPage()
    {
        
$args func_get_args();
        
$nom md5($args[0].rand(1,999));
        
setcookie("p:{$nom}",implode("|",$args));
        
self::$fileRequired $args[0];
        return 
$nom;
    }
    public static function 
pageIn()
    {
        
$nom self::$P;
        if(isset(
$_COOKIE["p:{$nom}"]))
        {
            
$Data $_COOKIE["p:{$nom}"];
            foreach(
explode("|",$Data) as $Id => $Value)
            {
                
$exp explode(":",$Value);
                if(
count($exp)==2)
                    
self::$getVars[$exp[0]] = $exp[1];
            }
            
        }
        else
        {
            
main::Error(1002);
        }
    }
}
unset(
$_GET);
url::pageIn();
$_GET url::$getVars;
?>
Tengo este código para cifrar URL... y transformar los datos como si fuésen por GET.

Funciona de la siguiente forma:
- Uso el siguiente código:
Código PHP:
<?php url::getPage("potocagao.php","idAlumno:10","idCitacion:5"); ?>
Lo que hace es encriptar en MD5 una cadena, que serían al archivo que quiero abrir, y el resto los datos que se usarán como si fuésen enviados por GET. Luego guardar eso en una cookie.
-
Código PHP:
<?php url::pageIn(); ?>
Se encarga de revisar el MD5 enviado por $_GET[p], para luego buscar la cookie que lleva el nombre en md5, y saber que datos necesito utilizar.
- Unseteo la variable $_GET , porq logicamente a través del código se estableceran los supuestos valores de $_GET.

Bueno, el código funciona perfecto... pero uno de los puntos negativos es que cae en ser inseguro... porque a pesar de estar cifrado en md5, es cuestión de que el usuario tenga un programa para ver las cookies del navegador y va a saber que datos contiene el asunto... Podría usar sesiones. Pero el punto no es ese.

El tema va en que si uso Cookies y/o Sesiones dependerá todo del navegador del usuario y además rellenaria el pc con coookies. Por ejemplo, si el usuario revisa 100 paginas del sitio, habrá creado el script 100 cookies...

Había pensado en crear un archivo en el servidor que tenga el nombre en md5, pero rellenaria mi servidor con cientos de archivos...

También habia pensado en MySQL... pero saturaria la base de datos, imaginense unos 1000 usuarios al dia, que cada uno visite 10 paginas... llenaria en un dia la base de datos con 10.000 registros... y al mes 300.000... demasiado.

¿ALGUIEN TIENE OTRA SOLUCIÓN?
  #2 (permalink)  
Antiguo 05/07/2009, 20:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿Cómo cifro una URL?

mi pregunta es....

¿¿porque hacerlo de esta forma???

osea, yo no le veo las mas mínima ventaja...

con que sentido, o con que objeto haces "eso" con tu script??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 05/07/2009, 20:51
 
Fecha de Ingreso: septiembre-2006
Mensajes: 127
Antigüedad: 18 años, 1 mes
Puntos: 5
Respuesta: ¿Cómo cifro una URL?

Para darle más "privacidad" a los datos enviados por GET. Y ademas muchas veces he programado sistemas que trabajan con datos enviados por GET, y sin querer el usuario modifica el valor desde la barra de direcciones, y estropea la acción... A ver, un ejemplo más claro:
url.php?id=100
El usuario sin querer pasa a borrar un 0, y el script se encarga de borrar el dato... Finalmente borrará el registro con la id 10, y no 100. Sé que para que ocurra eso, puede llegar a existir un márgen de probabilidad dimunuto... pero necesito que ese margen se mantenga en 0.

Además se que el usuario con el que trabajaré será demasiado novato, o probablemente un cracker...
  #4 (permalink)  
Antiguo 05/07/2009, 21:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: ¿Cómo cifro una URL?

claro, eso si lo entiendo...

pero porque la necesidad de crear tantas variables como URLs se necesiten???

con una sola que crees debe servir para todo... osea
Código PHP:
function pagina($url,$vars = array())
{
  
setcookie('vars'base64_encode(gzcompress(serialize($vars))), time() + 300);
}
function 
variables()
{
  return 
unserialize(base64_decode(gzuncompress($_COOKIE['vars'])));
}
pagina("borrar.php",array('id' => 100)); 
borrar.php
Código PHP:
$_GET variables(); 
y por lo de usar sesiones, yo lo veo como la mejor alternativa... ya que usar cookies es casi como explotar a un niño a trabajar como adulto....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 05/07/2009, 21:06
 
Fecha de Ingreso: septiembre-2006
Mensajes: 127
Antigüedad: 18 años, 1 mes
Puntos: 5
Respuesta: ¿Cómo cifro una URL?

Ok, gracias...
Bueno, lo d usar tantas variables fue cuestion de que no se me ocurrió otra forma jeje... vale...

Chao.
  #6 (permalink)  
Antiguo 06/07/2009, 19:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: ¿Cómo cifro una URL?

Solo como dato adicional, si validas correctamente permisos, no importa si cambian el dato que va desde GET, ya que si no tiene permisos para editar o borrar ese archivo, le muestras un mensaje de error.

Saludos.
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 21:48.