Hace poco tuve una conversación con un cracker y me dijo que puede pasar la comprobación de expresiones regulares de uri.
Estoy comprobando si la ruta_info coincide con mi expresión regular y, a continuación, la comparo con mi tabla de enrutamiento. Si no hay enrutamiento para esa ruta, redirigiré a una página 404.
Tengo un pequeño código aquí y me preguntaba si alguien podría descifrarlo al proporcionar datos incorrectos o si mi aplicación web está protegida. ¿Es posible eludir esto? (Tenga en cuenta que esto es sólo un código de ejemplo):
<?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;
}
?>