he comentado a "respuesta aceptada", por lo que tiene agujeros de seguridad. En su lugar, debe usar métodos más seguros, pero depende del método del formulario. (p.s. el método dado a continuación es más seguro, pero no ideal).
1) Al principio, deshabilite el encuadre de la página (.php
), donde se genera el formulario .php
.En la parte superior complemento:
header('X-Frame-Options: Deny');
2) Además, compruebe:
if(!empty($_POST)){
if(!empty($_SERVER['HTTP_REFERRER']) && DomainOf($_SERVER['HTTP_REFERRER']) == $_SERVER['HTTP_HOST']){
$request_valid = true;
}
}
3) Además, si el control (de lo contrario, salte esta parte) el código que crea/analiza los datos del formulario , a continuación, usar la lógica como este phseudo-código:
<?php
// ========= Needef functions =========
// RandomString : https://pastebin.com/raw/CziyUiDv
// Two way encryption: https://github.com/tazotodua/useful-php-scripts/blob/master/two-way-encrypt-decrypt.php
//before start of the output
$secret_key = 'fjd3vkuw#KURefg'; //change this
$encrypted_value = Cryptor::encrypt(time(), $_SERVER['REMOTE_ADDR'] . $secret_key);
?>
<form>
....
<input name="temp_random" value="<?php echo $encrypted_value;?>" ... />
en análisis sintáctico, comprobar si la validación pasado (expira en 15 minutos):
// paragraph 2 validation at first
// .....
// then:
if ( Cryptor::decrypt( $_POST['temp_random'], $_SERVER['REMOTE_ADDR'] . $secret_key) > time() - 60* 15){
//validated
...
}
También intenté verificar la URL en PHP, pero luego descubrí que era un error de aficionado. – Juan
Ok. He revisado lo que ustedes me han dado, y he pensado en una idea diferente usando lo que ustedes me dieron ... ¿Qué pasaría si aleatorizara un conjunto de caracteres => convertidos a una variable, los publicara como el valor oculto? por lo que cambia cada vez, y verifique que cuando se ejecuta mi secuencia de comandos? – Juan
error aficionado de nuevo ..... lo siento. – Juan