Ho uno script in cui i processori di pagamento vengono con conferme di pagamento. Per rendere la pagina sicura, in quanto si può accedere alle informazioni di ordine e altre cose legate utente, ho dovuto limitare i accesso di IP (/ 24) come segue:Conosci un semplice script php per lanciare 403, dopo il controllo ip?
$ipAllowed = array(
'192.192.192',
'172.172.172'
);
$ipAllowed = str_replace(".", "\.", implode("|", $ipAllowed));
if(!preg_match("/^($ipAllowed)\.[0-9]{1,3}$/", $_SERVER['REMOTE_ADDR'])){
header('HTTP/1.0 403 Forbidden');
die('You are not allowed to access this file.');
}
* gli ip di sono solo un esempio
Prima ho usato:
if(!in_array(@$_SERVER['REMOTE_ADDR'], array('ips here'))); //only works with full ip
L'in_array era molto più ordinato, allora quello che uso ora, ma ho bisogno di qualcosa che funziona con/24 ips, o anche con entrambe le cose!
Sai qualcosa che funziona meglio/più veloce, è affidabile e molto più ordinato?
@ rap-2-h Come lei ha affermato questa è la versione più ordinato che funziona con piena ip,/24 o addirittura/16
$ipAllowed = array('192.168.1.153' '172.172.172');
$allowed = false;
foreach($ipAllowed as $ip):
if(strpos($_SERVER['REMOTE_ADDR'], $ip) === 0) $allowed = true;
endforeach;
if (!$allowed) {
header('HTTP/1.0 403 Forbidden');
die('You are not allowed to access this file.');
}
Spero che abbiate anche altre misure di sicurezza. L'IP è bello come difesa in profondità, ma eviterei di fare affidamento su di esso come unica misura. – CodesInChaos
sì! dopo, l'intero metodo inizia a calcolare i parametri POST e agisce di conseguenza (anche un hash di tutti i parametri viene inviato con una chiave cifrata). Potrei contare solo su questo, ma voglio essere al sicuro. – amstegraf
"viene anche inviato un hash di tutti i parametri con una chiave di cifratura" Come funziona l'hash con chiave? È qualcosa di buono, come HMAC o qualcosa di rotto come H (k || m)? – CodesInChaos