Recentemente ho avuto una chat con un cracker e mi ha detto che può superare il controllo uri regexp.
Sto controllando se path_info corrisponde alla mia espressione regolare e successivamente lo abbino alla mia tabella di routing. Se non esiste un instradamento per quel percorso, reindirizzo a una pagina 404.
Ho un po 'di codice qui e mi chiedevo se qualcuno potrebbe risolvere il problema fornendo dati errati o la mia app web è protetta? È possibile aggirare questo? (Si prega di notare che questo è solo un codice di esempio):
<?php
// alphabetic characters, numbers, "-" and "/" are allowed
$pathRegex = '/[a-zA-Z0-9\/-]+/';
$pathInfo = $_SERVER["PATH_INFO"];
$routes = array(
"homepage" => "/",
"some_page" => "/param1/param2-something"
);
$res = preg_match($pathRegex, $pathInfo, $matches);
if ($res && $matches[0] == $pathInfo) {
if (checkRouting($pathInfo, $routes)) {
// keep on running
} else {
// 404, sorry
}
} else {
// wrong path
}
function checkRouting($path, $routes) {
$res = false;
foreach($routes as $key => $val) {
if ($val == $path) {
$res = true;
break;
}
}
return $res;
}
?>