Estoy haciendo un sistema con CakePHP que necesita ser decentemente seguro, porque estamos tratando con dinero, cuentas de clientes, etc. Hasta ahora todo ha estado funcionando bien, hasta que tuve que integrarme con una plataforma de pagos en la que Necesito redireccionar a su sitio y me redirigen a la mía.¿De qué está protegiendo la session.referer_check de PHP?
Esto funciona bien en mi máquina de desarrollo (depuración = 2), pero en producción, cuando se redirige al cliente, recibe un aviso de inicio de sesión en lugar de volver a su "área de inicio de sesión". Después de excavar, descubrí que esto se debe a que CakePHP establece session.referer_check, lo que invalida las sesiones si el HTTP_REFERER proviene de otro servidor que no sea el mío.
Ahora, normalmente, desactivo esto sin pensarlo dos veces, pero en este sistema estoy un poco más preocupado por la seguridad de lo normal.
Mi pregunta es ¿de qué se supone que me debe proteger session.referer_check?
¿Qué tipo de ataque/ataque/malo se puede hacer en mi sitio si lo desactivo?
Supongo que debe haber alguna razón por la que esto existe, pero no puedo imaginar de qué me protegería.
¿Podría darme alguna idea?
¿Es seguro desactivar esto?
Gracias
Daniel
¿Está 100% comprobando la referencia y no un token enviado con formularios en una solicitud previa para protegerse contra CSRF? – Pablo
100% seguro. CakePHP no está verificando el referente, solo está activando un referer_check (una característica de PHP que verifica el referente mismo: http://www.php.net/manual/en/session.configuration.php#ini.session.referer-check) - Además, el resultado que veo es desconectar a la gente. Lo que hace CakePHP cuando no le gusta el token CSRF (o cuando no lo tiene) es "blackholing" (página en blanco, básicamente) –
Similar: http://stackoverflow.com/questions/22079477/cakephp -session-is-lost-after-an-oauth-redirect – trante