Quali sono alcuni esempi di codice che è possibile utilizzare per impedire alle persone di trasmettere voti per attribuire loro una valutazione più elevata mediante l'hacking dello script php?Arrestare le persone dal dirottare un sistema di votazione usando PHP?
risposta
La prima linea di difesa è un biscotto.
Fondamentalmente, si imposta il cookie sul proprio computer e si disabilita il voto se è presente.
setcookie('cookiename', 'voted=1');
// and later
if(isset($_COOKIE['cookiename']) && $_COOKIE['cookiename'] = "voted=1")
{
// error
}
Questo si libera di una banca dati chiamata che potrebbe essere necessario effettuare al fine di convalidare il loro voto. È una buona idea tenerlo a posto, perché è come fare il caching: meno utenti colpiscono il database e meglio è.
La seconda linea di difesa è IP limitante. Fondamentalmente controlleresti un registro degli indirizzi IP nel tuo database e vedrai se hanno votato di recente.
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
}
Trasformare il vostro intero script in qualcosa sulla falsariga di
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().'")');
Dovrete anche aggiungere nei tempi di scadenza e simili, ma il jist base di esso è lì.
Nota: probabilmente vorrai reimpostare il cookie se trovi sul database che hanno votato di recente. –
Impostare i cookie su utenti già votati e non consentire di votare per un po 'di tempo.
Oltre alla protezione dei cookie, aggiungere la protezione dell'indirizzo IP. Un singolo indirizzo IP può votare solo una volta per un certo periodo di tempo. Una buona alternativa per la protezione IP è la protezione combinata (ip + user_agent + ...).
Chiedi agli utenti di inserire captcha quando stanno facendo azioni troppo veloci.
Btw., Non è necessario mantenere l'intero registro IP. Tenere il registro solo per l'ultima ora: sarebbe ancora più che sufficiente. – Kirzilla
Un paio di idee:
- Utilizzare un CAPTCHA indirizzo
- Record IP (in conformità con la vostra politica sulla privacy, ovviamente)
L'unico modo per impedirgli di farlo è avere un buon sistema di autenticazione utente. Salvo che, si potrebbe scoraggiare utilizzando i cookie e Captcha.
- 1. Come progetteresti un sistema di votazione RESTful?
- 2. Implementazione di un sistema di votazione in diretta
- 3. Sistema di votazione/motore per i clienti?
- 4. Implementazione di un sistema di votazione senza registrazione
- 5. recupero effettivo per un sistema di votazione in PHP e MySQL
- 6. Limitare le persone utilizzando PHP GET variabile
- 7. Come posso creare un sistema "ricordami di me" usando PHP?
- 8. Un sistema basato su funzionalità di votazione/prodotto che non è un bug tracker
- 9. Sistema di login PHP
- 10. Perché le persone usano ProjectData
- 11. PHP: Creazione di un sistema CMS estensibile
- 12. interrompe tutti gli attori in un sistema senza arrestare il sistema stesso?
- 13. In che modo le persone gestiscono la gestione della produzione del sistema di gestione dei contenuti?
- 14. Come creare un sistema di code PHP
- 15. Condividere le cartelle dal sistema operativo host Mac a un sistema Linux guest in VirtualBox
- 16. Implementazione di una chat casuale tra le persone
- 17. Come arrestare tutte le istanze Cassini?
- 18. Come impacchettare un programma da condividere con le persone?
- 19. Come ottenere informazioni di sistema in PHP?
- 20. PHP eCommerce sistema
- 21. Come posso impressionare le persone con le capacità di Perl?
- 22. mysql errore di PHP - Sistema di citazione
- 23. Come sviluppare un sistema di avviso come Facebook usando PHP e Jquery?
- 24. È possibile arrestare un deambulatore?
- 25. Quali tipi di errori dovrebbero interrompere il sistema, nel sistema web PHP rilasciato?
- 26. Sistema di moduli prisma dal servizio WCF?
- 27. Un sistema facebook-come-notifica in php
- 28. Come evitare i nomi utente duplicati quando le persone si registrano? PHP/MySQL
- 29. Cosa vogliono le persone in un persistente dizionario .NET?
- 30. In che modo le persone usano Yeoman?
Uhm, non capisco la domanda. Sicuramente lo script è in esecuzione su un server a cui gli utenti non hanno accesso, giusto? Cioè, non dovrebbero avere accesso allo script php effettivo, solo essere in grado di chiamarlo. –
Dovrai entrare in molti, molti più dettagli di questo, amico mio. :) –