Cita:
Iniciado por Ronruby $REQUEST_URI se usa cuando register_globals esta on, eso si es un gran riesgo de seguridad.
Exacto, de hecho, el principal riesgo de recibir parametros (GET o POST) es tener register_globals activado. Entonces, ademas de deshabilitar register_globals, la mejor forma de garantizar la seguridad es evaluar y validar cada variable recibida, porque se puede "ofuscar", encriptar y tratar de ocultar las variables por cualquier metodo, pero si no hay una buena validacion es casi como cerrar tu auto, poner alarma y colocar las llaves debajo de la llanta, esperando que nadie las encuentre.
Es decir, si esperas una cadena, verifica que el dato recibido sea una cadena, con la longitud deseada y reemplazando caracteres especiales por sus respectivos codigos html; si esperas un dato numerico, asegurate de que realmente sea asi, con doubleval(), intval() o simplemente multiplicando por 1.
Otras practicas de seguridad:
Nunca uses directamente $_GET['variable'] o $_POST['variable'] ni $_REQUEST['variable'] en consultas a base de datos.
Asegurate de inicializar cada variable esperada (por GET o POST):
Código php:
Ver original// Por asignacion ternaria:
$variable = (isset($_GET['variable'])) ? html_entities
(trim($_GET['variable'])) : '';
// Con if - then - else convencional
if(isset($_GET['variable'])) $variable = html_entities
(trim($_GET['variable'])); else
$variable = '';
// Despues validas lo recibido
// Cadenas con strlen() y numeros con mayor que, menor que o igual a