Un reindirizzamento aperto significa che il valore di reindirizzamento può essere determinato al volo.
Quello che si consiglia è di avere solo una lista consentita predefinita. Si dispone di un meccanismo per consentire a un utente autorizzato di inserire l'URL o forse questa è una funzione automatica di un CMS o di un'app Web che cerca i collegamenti in uscita e quindi crea la voce. Determinate quali sono i criteri necessari per una persona o un processo automatizzato per "aggiungere" un link, potete anche filtrare o inserire una blacklist nel momento in cui ciò accade.
Sul lato server, avresti quindi un database. Dovresti aggiungere al database almeno un ID e l'URL effettivo. Puoi decidere di fare qualcosa di diverso dai numeri di identificazione in ordine, magari usando qualche funzione per creare numeri semi-casuali al fine di prevenire l'enumerazione semplicemente incrementando il valore di id. Qualcosa come
| id | real_url | shortcode |
--------------------------------
| 1 | example.com | X3DFE |
| 2 | example.net | G4TG |
Potresti avere un URL come: example.com/out?shortcode=X3DFE
lo elabori dal lato server e poi emetti un reindirizzamento a real_url
se lo shortcode non si trova nella tabella di ricerca, fornisci un messaggio di errore che dice che è non valido.
Quindi sul lato server qualcosa come:
$shortcode = filter_function($_GET['shortcode']);
$url = sql_select_function("SELECT 'real_url' FROM url_table WHERE shortcode ='" . $shortcode . "');
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $url . "");
Le specifiche dipenderanno ovviamente dalla tua lingua e dalle altre attività che desideri svolgere.
Il tuo database può anche includere altre informazioni, potresti richiedere moderazione per i link inviati dall'utente o potresti voler includere l'utente che ha creato i collegamenti. Puoi anche registrare i conteggi dei colpi, ecc.
Il concetto chiave è che si utilizza un meccanismo per predeterminare l'elenco e assicurarsi che la decisione di reindirizzamento sia presa sul lato server. L'idea è di creare una whitelist di consentire reindirizzamenti.
Ti consiglio di esaminare il modo in cui alcuni accorciatori di URL funzionano come il suo concetto simile e possono fornire un codice utile nella tua lingua di destinazione.