Foros del Web » Programando para Internet » PHP »

Seguridad de los visitantes

Estas en el tema de Seguridad de los visitantes en el foro de PHP en Foros del Web. Bueno no se si se pueda o no pero el PHP me ha dado muchas sorpresas por eso pregunto. Tengo un articulo que debe ser ...
  #1 (permalink)  
Antiguo 27/07/2006, 16:44
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Seguridad de los visitantes

Bueno no se si se pueda o no pero el PHP me ha dado muchas sorpresas por eso pregunto.

Tengo un articulo que debe ser opinado y votado, quiero que una persona vote por solo una ves, y no se puede hacer sistema de registrod e usuarios, es decir todo el que entre a la pagina debera poder votar sin necesidad de registrarse.

he planteado varios niveles de seguridad:

1. Sesiones, solo qeu cuando cierren el navegador o pase un tiempo podran votar.

2. Cookies, si las tienen des habilitadas o la borran o la alteran podran votar.

3. grabar su IP, si la esconden o cambia por no ser IP estatica podran votar.

que otras alternativas hay, estuve leyendo y veo que hay varios programas en PHP que utilizan MAC adreess, pero tambien he leido que este sistema es imposible de sacar por medio de PHP lo que quiero saber es que otras recomendaciones me dan....

muchas gracias
__________________
SEO en Medellin
  #2 (permalink)  
Antiguo 27/07/2006, 17:06
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
eso es algo interesante de saber.. me sumo a tu pedido.

(seria mejor que le cambias el titulo al post porque no refleja realmente lo que preguntas y vas a perder muchas respuesta por culpa de eso)
__________________
oohh... quisiera ser godines!!!
  #3 (permalink)  
Antiguo 27/07/2006, 17:29
Avatar de pato_volador  
Fecha de Ingreso: octubre-2005
Ubicación: Planeta tierra
Mensajes: 254
Antigüedad: 18 años, 6 meses
Puntos: 0
Esta canijo lo q propones, pero lo mismo muy interesante, solo hay que poner clara la restriccion. Solo podran votar una vez por dia? o una sola vez en su vida? como quieres controlar los votos???

podemos empezar por alli y hacerlo reto personal.. jojojo

Saludos!
__________________
De todas las cosas que queria ser... :-D acabe siendo un pato volador... :risa:
http://patovolador.wordpress.com
  #4 (permalink)  
Antiguo 28/07/2006, 13:22
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
No creo que sea necesario hacer la restreiccion creo que lo interesante del asunto es la posibilidad de que halla una identificacion unica por maquina conectada a internet en el mundo. y que ese identificadro pueda ser tratado desde PHP. y pues si no lo hay (por lo menos tan preciso) al menos que halla una forma de identificar lo mas certero posible.

sin embargo les digo: los visitantes podrían visitar o comentar cada que halla un nuevo tema...

los votos irian a una base de datos y desde luego con los datos de quien voto:

IP, REMOTE ADDR, FECHA Y HORA, y lo demás que sea necesario para poder identificar si esa misma maquina ingresa de nuevo al sitio.

un saludo
__________________
SEO en Medellin
  #5 (permalink)  
Antiguo 28/07/2006, 13:24
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Lamentablemente no puedo editar le titulo del tema, pero concuerdo en que debi haber puesto algo mas descriptivo, esperemo que lleguen algunos maestros a brindar soluciones o desilusiones, o tambien y por que no: gente contando su experiencia, por que se que es un tema que nos puede servir a todos en un determinado momento.
__________________
SEO en Medellin
  #6 (permalink)  
Antiguo 29/07/2006, 10:15
 
Fecha de Ingreso: marzo-2006
Ubicación: Ramos Arizpe, Coah
Mensajes: 70
Antigüedad: 18 años, 1 mes
Puntos: 0
De acuerdo

Haber si te sirve esto que hize hace tiempo lo que hace es guardar el identificador IP de la maquina y la fecha del comentario esto lo puedes adaptar a los votos es la misma logica, de aqui se parte para identificar si ha hecho ya un comentario la persona, verificado la ip si existe pasa al segundo paso jalando el minuto en que fue hecho el comentario de ahi se calcula el tiempo entre el comentario anterior ingresado y el nuevo comentario, de hecho puedes modificar los minutos a tu gusto, abajo tiene una variable, Saludos!! Por cierto puedes traerte los minutos con un DATE_FORMAT(fecha, 'm') en el query.

Código PHP:
$tiempo_espera=10///MINUTOS DE ESPERA
$formateo=new formateo;  ///CLASE
//SIMPRE RECIBIREMOS ESTA VARIABLE PARA MOSTRAR DETALLES
$_GET['producto']=$formateo->limpiar_var($_GET['producto']);
$proceso=true;  ////IDENTIFICADOR SI EXISTE EL PRODUCTO
$ingresar_comentario=""//INICIALIZO
/////////TRAEMOS LOS DATOS
$liberar=Conectar();
if (
$consulta=mysql_query("SELECT producto FROM tab005 WHERE id={$_GET['producto']}'"$liberar)){
   
////SACAR EL NOMBRE DEL PRODUCTO
   
if ($row=mysql_fetch_assoc($consulta)){
     
$producto_pro=$row['producto'];
     
$proceso=false;
   }else{
     
$error.='El producto no existe.<br>';
     
$proceso=false;
   }
Cerrar($liberar);
}else{
     
$error.='El servidor se encuentra en mantenimiento, intente de nuevo mas tarde.';
}
//////////////////////////INGRESAR LOS DATOS DE LA CONSULTA///////////////////////////////
$liberar=Conectar();
if (
$_POST['enter']){
        
$ingresar_comentario=true;
        if (!
$_GET['producto']=$formateo->limpiar_bd($_GET['producto'])){
           
$ingresar_comentario=false;
           
$error='No se ha seleccionado el producto.<br>';
        }
        if (!
$_POST['nombre']=$formateo->limpiar_bd($_POST['nombre'])){
           
$ingresar_comentario=false;
           
$error.='Es necesario ingresar su nombre.<br>';
        }
        if (!
$_POST['comentario']=$formateo->limpiar_bd($_POST['comentario'])){
           
$ingresar_comentario=false;
           
$error.='Es necesario ingresar su comentario.<br>';
        }
///////////SI PASAN TODOS LOS DATOS VA AL PASO 2////////////////////////////
if ($ingresar_comentario){
/////////////VERIFICAR QUE NO HAYA HECHO UN COMENTARIO LOS ULTIMOS MINUTOS///////////
///////////OBTENER IP DEL VISITANTE//////////
if (getenv("HTTP_X_FORWARDED_FOR")) {
     
$ip   getenv("HTTP_X_FORWARDED_FOR");
   } else {
     
$ip   getenv("REMOTE_ADDR");
  }
/////////////////////////////////////////////
$minutos=date("i");
$minuto_bd="";
 if (
$consulta=mysql_query("SELECT tab012.fecha FROM tab012 WHERE tab012.ip='{$ip}' ORDER BY tab012.fecha DESC LIMIT 0, 1",$liberar)){
   if(
$row=mysql_fetch_assoc($consulta)){ ///COMPROBAR QUE EXISTA
       
$minuto_bd=explode(":"$row['fecha']);
       
$minuto_bd=$minuto_bd[1];
   }
 }
 
//////FILRO MINUTOS/////////
 
if ($minuto_bd AND ($minuto_bd+$tiempo_espera)>60){
     
$minuto_bd=($minuto_bd+$tiempo_espera)-60;
 }
 
////////////////////////////
 
if (!$minuto_bd || (date("i")-$minuto_bd)>=$tiempo_espera){
    
////INGRESO COMENTARIO
    
$fecha=date("Ymd H:i:s");
    if (!
$consulta=mysql_query("INSERT INTO tab012 (id_com, ip, nombre, comentario, valor, fecha) VALUES ('{$_GET[producto]}', '{$ip}', '{$_POST[nombre]}', '{$_POST['comentario']}', '{$_POST['valor']}', '{$fecha}')"$liberar)){
        
$error='En estos momentos no se puede agregar su comentario porfavor intente mas tarde.<br>';
        
$ingresar_comentario=false;
    }else{
        
$error='Felicidades se ha agregado su comentario<br>';
    }
    
Cerrar($liberar);
 }else{
    
$error='Tiene que esperar '.(($minuto_bd+$tiempo_espera)-date("i")).' minutos para poder agregar un nuevo mensaje.<br>';
    
$ingresar_comentario=false;
 }
////////////////////////////////////////////////////////////////////////////////////
}
}
///////////////////SI NO HAN INGRESADO COMENTARIO///////////////////////////////////
if (!$ingresar_comentario){
  if (
$consulta=mysql_query("SELECT id, producto FROM tab005 WHERE id='{$_GET[producto]}'"$liberar)){
          
$row=mysql_fetch_assoc($consulta);
          
$id_pro=$row['id'];
          
$producto_pro=$row['producto'];
          
Cerrar($liberar);
          if (!
$id_pro){    ///SEGUNDO INDETIFICADOR INTERNO
               
$proceso=false;
          }
          
/////////////FILTRO DE IMAGEN POR DEFUAL SI NO EXISTE
  
}else{
          
$proceso=false;
  } 
  #7 (permalink)  
Antiguo 29/07/2006, 16:39
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
hola f3nixl,

Una pregunta: pero no se supone que el usuario recibe un nº de IP diferente cada vez que se conecta a internet? Osea que el nº de IP valdria para un navegante solo hasta que se desconecte... o estoy equivocado?
__________________
oohh... quisiera ser godines!!!

Última edición por safe; 29/07/2006 a las 19:09
  #8 (permalink)  
Antiguo 29/07/2006, 16:46
Geo
 
Fecha de Ingreso: marzo-2003
Ubicación: México
Mensajes: 44
Antigüedad: 21 años, 1 mes
Puntos: 2
No soy experto ni nada en el tema, pero creo que sería mejor pasar a implementar un registro de usuarios y de esa manera controlarlo, ya que el lograr identificar una máquina de manera única es muy complicado, sobretodo si nos vamos por el tema de la privacidad (si es posible que identifiquen esa máquina como única, también será posible rastrearle).

Saludos,
JJ (Geo).
__________________
La imaginación es el límite
Visita mi página o la versión anterior.
  #9 (permalink)  
Antiguo 29/07/2006, 19:14
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 2 meses
Puntos: 10
Hola Geo... creo que nadie duda que la mejor opcion para lograr que un usuario pueda "actuar" una sola vez es poner un registro de usuarios.
Pero hay muchos casos en que esto se requiere que cualquier usuario pueda "actuar" de manera rapida y sencilla... y en la que sabemos de por seguro que si el usuario tiene que registrarse para "actuar", directamente no lo va a hacer.
Creo yo que son estos casos los que nos interesan en este post.
__________________
oohh... quisiera ser godines!!!
  #10 (permalink)  
Antiguo 29/07/2006, 23:56
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Si es esactamente mi pregunta.... no quiero sistema de registro por dos cosas:

1. NO es tan versatil.
2. Quiero saber si hay alguna manera... depronto resulta alguien con experiencia

por otro lado coger la IP no nos sirve por que como dice SAFE si su conexion es Comnutada o aun bajo Cablemodem o ADSL y su proveedor de servicio a internet - El que llaman ISP - no tiene ip FIja sino Dinamica << Y creanme son la gran mayoria de nuestro publico objetivo >> entonces no nos serviria el sistema de seguridad.

He estado tratando de indagar sobre algun numero de identificación unico... pero no encuentro mas que el que antes mensione...

UN saludo graicas por su interes
__________________
SEO en Medellin
  #11 (permalink)  
Antiguo 31/07/2006, 08:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
1. Sesiones, solo qeu cuando cierren el navegador o pase un tiempo podran votar.
Nada efectivo .. con entrar y salir de tu sitio ya podría votar.

Como observación: En ese caso tendrías que propagar el SID en el URL ..

Cita:
2. Cookies, si las tienen des habilitadas o la borran o la alteran podran votar.
Eso mismo.

Cita:
3. grabar su IP, si la esconden o cambia por no ser IP estatica podran votar.
Tendrás problemas con los que quieran realizar votos y pasen por un proxy, lease empresas/instituciones que salen por la misma IP. Por lo demás el que quiera votar denuevo si usa IP dinámica sólo tendrá que pedir IP nueva o pasar por un proxy para realizar nuevos votos .. En este caso algo más de "ingenio" se requiere de quien quiera alterar los votos .. pero hasta eso se puede automatizar en forma maliciosa ..

Cita:
que otras alternativas hay, estuve leyendo y veo que hay varios programas en PHP que utilizan MAC adreess, pero tambien he leido que este sistema es imposible de sacar por medio de PHP lo que quiero saber es que otras recomendaciones me dan....
El MAC Address sólo lo puedes obtener en una LAN ethernet .. no sirve para "Internet".

En resumen .. TIENES que asumir cierto margen de error en tus votaciones por todos estos motivos.

Si dices que no quieres un registro de usuarios (que es lo único realmente -seguro- y fiable para registro de votos) .. por lo menos deberías implementar un sistema de "CAPTCHA" o código visual de seguridad .. que ingrese el usuario manualmente para efectuar el voto. Así aseguras "votos" ingresados automáticamente por sistemas externos.


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 02/08/2006, 19:10
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Gracias cluster...
definitivamente el codigo MAC no se puede sacar he ensayado con 5 codigos diferentes y solo vos me has dicho que solo son para red, ya ves... te lo agradezco un saludo para todos
__________________
SEO en Medellin
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 19:21.