¿Cuáles son algunos ejemplos de código que puedo usar para evitar que las personas emitan votos y darles una calificación más alta al hackear el script php?¿Cómo detener a las personas de secuestrar un sistema de votación con PHP?
Respuesta
La primera línea de defensa es una galleta.
Básicamente, configura la cookie en su máquina y deshabilita la votación, si está presente.
setcookie('cookiename', 'voted=1');
// and later
if(isset($_COOKIE['cookiename']) && $_COOKIE['cookiename'] = "voted=1")
{
// error
}
Esto elimina una llamada a la base de datos que pueda necesitar para validar su voto. Es una buena idea mantener esto en su lugar, porque es como el almacenamiento en caché: los pocos ingresan en la base de datos, mejor.
La segunda línea de defensa es la limitación de IP. Básicamente verificará si hay un registro de dirección IP en su base de datos y verá si votaron recientemente.
mysql_query('INSERT INTO TABLE (`IP_ADDR`, `TIME`) VALUES("'.$_SERVER['REMOTE_ADDR'].'", "'.time().'")');
// and later
$results = mysql_query('SELECT IP_ADDR FROM TABLE WHERE IP_ADDR="'.$_SERVER['REMOTE_ADDR'].'"');
if(mysql_num_rows($results) != 0)
{
// error
}
Volviendo toda su script en algo en la línea de
if(isset($_COOKIE['cookiename']) && $_COOKIE['cookiename'] = "voted=1")
{
die("You have voted recently.");
}
$results = mysql_query('SELECT IP_ADDR FROM TABLE WHERE IP_ADDR="'.$_SERVER['REMOTE_ADDR'].'"');
if(mysql_num_rows($results) != 0)
{
die("You have voted recently");
}
//Do Voting Stuff Here
vote($_GET['vote']);
// Record the vote.
setcookie('cookiename', 'voted=1');
mysql_query('INSERT INTO TABLE (`IP_ADDR`, `TIME`) VALUES("'.$_SERVER['REMOTE_ADDR'].'", "'.time().'")');
También tendrá que agregar en los tiempos de expiración y tal, pero el jist básica de que está ahí.
Nota: Es probable que desee restablecer la cookie si encuentra en la base de datos que han votado recientemente. –
Set cookies para ya votadas usuarios y no permitir que voten por algún tiempo.
Junto a la protección de cookies, agregue protección de dirección IP. La dirección IP única puede votar solo una vez por un período de tiempo. Una buena alternativa para la protección de IP es la protección mediante un esquema combinado (ip + user_agent + ...).
Pídales a los usuarios que ingresen captcha cuando están haciendo acciones demasiado rápido.
Por cierto, no necesita mantener todo el registro de ip. Mantenga el registro solo durante la última 1 hora, sería incluso más que suficiente. – Kirzilla
Un par de ideas:
- Utilice un CAPTCHA de dirección
- registro IP (de acuerdo con su política de privacidad, por supuesto)
La única manera de evitar que lo hagan es tener un buen sistema de autenticación de usuario. Salvo eso, puede desalentarlo mediante el uso de cookies y Captcha.
- 1. ¿Cómo implemento un sistema de votación?
- 2. ¿Cómo diseñarías un sistema de votación RESTful?
- 3. sistema de votación simple con MongoDB
- 4. Sistema de votación Stack Overflow/reddit en php
- 5. cómo hacer un sistema de votación como stackoverflow usando ajax/jquery/php (eficiente)
- 6. Implementación de un sistema de votación sin necesidad de registro
- 7. Sistema de votación/motor para clientes?
- 8. Recuperación efectiva para un sistema de votación en PHP y MySQL
- 9. construir un sistema de complemento con php
- 10. votación de estilo reddit con django
- 11. Detener un sistema JADE (agentes Java)
- 12. ¿Cómo puedo impresionar a las personas con las capacidades de Perl?
- 13. Complemento del sistema de votación Wordpress Digg-Like
- 14. Guión de votación de arriba/abajo
- 15. ¿Cómo iniciar/detener un cronjob usando PHP?
- 16. ¿Asigna personas a edificios respetando las preferencias?
- 17. Crear encuesta/votación/encuesta única en php
- 18. ¿Qué tipos de errores deberían detener el sistema en el sistema web php lanzado?
- 19. Detener la votación de los usuarios varias veces en un sitio web
- 20. alternativa a la votación. Actualizaciones de HTML
- 21. ¿Cuáles son las implicaciones de ofrecer un sistema de votación público (no se requiere inicio de sesión)?
- 22. ¿Cómo mitigar el efecto de vagoneta (comportamiento de votación) en mi sistema de clasificación?
- 23. Cómo codificar Android para las personas con discapacidad visual?
- 24. php - ¿VERDADERO o verdadero? personas
- 25. detener a todos los actores en un sistema sin apagar el sistema en sí?
- 26. Tengo un tipo de sistema de votación StackOverflow en una página Confluence
- 27. ¿Cómo impide Flickr a las personas descargar imágenes del sitio?
- 28. Enviando correo a un gran número de personas
- 29. ¿Cómo depuran las personas en ECB Emacs?
- 30. ¿Cómo las personas eligen los nombres de los productos?
Uhm, no entiendo la pregunta. Seguramente la secuencia de comandos se ejecuta en un servidor al que los usuarios no tienen acceso, ¿verdad? Es decir, no deberían tener acceso al script php real, solo poder llamarlo. –
Tendrá que entrar en mucho, mucho más detalle que eso, mi amigo. :) –