Diciamo che lato server generi un codice random di sicurezza.Originariamente inviato da adrenokromo
...
Però non ho ben capito l'altra soluzione che proponi.. Mettiamo che io generi questo codice random.. lo "trasformi con js".. ma poi come lo uso? A che scopo mi è utile per la verifica?
Salvi questo codice in una variabile di sessione...
...e lo inserisci in un campo hidden del form da inviare.Codice PHP:$code = genera_codice_casuale();
$_SESSION['code_sec'] = $code;
Lato client devi catturare l'evento di invio del form e applicare al valore del campo code_sec l'algoritmo che preferisci.Codice PHP:<form action="target.php" method="post">
...gli altri campi del form
<input type="hidden" id="cod_sec" name="code_sec" value="<?=$code?>" />
..resto del form
</form>
Ad esempio supponiamo di invertire la stringa:
Lato server devi controllare, anzitutto che il campo hidden venga inviato, e che contenga effettivamente la stringa invertitaCodice PHP:function submitHandler() {
var el = document.getElementById('code_sec');
el.value = reverse(el.value);
}
Le due funzioni reverse le devi scrivere tu, sia in PHP, sia in Javascript, se non esistono già. Oppure le puoi sostituire con qualche algoritmo più astruso...ma in effetti non migliore di molto l'efficacia del metodo.Codice PHP:if(isset($_POST['code_sec'])) {
if($_SESSION['code_sec'] === reverse($_POST['code_sec'])) {
//OK, qui puoi ragionevolmente pensare di aver a che fare
//con una persona...forse ;)
}
}
Il problema principale di questo sistema è, naturalmente, l'utilizzo di javascript:
1 - Se l'utente l'ha disabilitato, il server non accetterà mai il form.
2 - Qualcuno può sempre pensare di leggersi il tuo codice, capire il meccanismo, e a quel punto sei da capo.
E' anche vero che se qualcuno ha così tanta voglia di darti fastidio, può essere divertente vedere chi è più bravo
Spero di esserti stato utile.


Rispondi quotando