Autor
|
Tema: [Resuelto] ¿Como puedo obtener una URL con PHP desde un archivo AJAX? (Leído 5,891 veces)
|
Leguim
Desconectado
Mensajes: 720
|
Buenas noches a todos! Estaba haciendo un sistema nuevo pero me estanque en un tema, digamos tengo un botón en mi pagina.php que al tocarlo realiza una función (JS) -> que va a llamar a un fichero_ajax.php (ajax) Correcto... Cuando quiero obtener la URL de la pagina.php con PHP de la siguiente manera: En fichero_ajax.php $url = $_SERVER["PHP_SELF"];
Me va a devolver "/pagina/ajax/fichero_ajax.php" pero yo necesito que me devuelva "/pagina/pagina.php" Es decir la "URL" de la pagina desde donde se llamo la función JS -> que conecta con el archivo ajax Muchas gracias!
|
|
« Última modificación: 9 Septiembre 2019, 21:02 pm por #!drvy »
|
En línea
|
|
|
|
jmpesp
Desconectado
Mensajes: 21
|
No se puede hacer de esa manera.
La variable de entorno PHP_SELF devuelve la ruta relativa a la raiz del document del archivo que se esta ejecuntado, que en este caso es el archivo que consultas via AJAX.
Lo que si puedes usar es la cabecera "Referer" (asegurate de que tu script js la este enviando correctamente), que contiene la URL completa desde donde se genero la peticion. Teniendo la URL completa simplemente extraes la URI con parse_url().
Aun asi, debes tener en cuenta que esa cabecera es totalmente manipulable por el cliente y no deberias basarte en ella para realizar ninguna operacion critica.
Ademas, el URI path no siempre corresponde con la ruta relativa del script php que esta atendiendo esa peticion (por ejemplo si usas URL rewrite).
----------------------------
Dejando eso de lado, que es exactamente lo que queres lograr? Es decir, para que necesitas la ruta del archivo donde se origina la peticion AJAX?
Deberias proveer mas detalles sobre lo que estas haciendo para poder aconsejarte mejor.
Saludos
|
|
|
En línea
|
|
|
|
Leguim
Desconectado
Mensajes: 720
|
Por razones de seguridad no me gusta nada que los usuarios puedan ejecutar funciones js y mucho menos que entre esas funciones js se puedan usar las funciones que llaman a archivos ajax. Por eso quiero saber desde que paginas se llaman a los archivos o peticiones ajax y decidir si permitirlos o no. Por supuesto esto no me hace la aplicación más segura con esto. Pero si me parece que me puede ayudar mucho.
|
|
|
En línea
|
|
|
|
engel lex
|
Por razones de seguridad no me gusta nada que los usuarios puedan ejecutar funciones js y mucho menos que entre esas funciones js se puedan usar las funciones que llaman a archivos ajax. Por eso quiero saber desde que paginas se llaman a los archivos o peticiones ajax y decidir si permitirlos o no. Por supuesto esto no me hace la aplicación más segura con esto. Pero si me parece que me puede ayudar mucho.
si tienes usa percepción entonces probablemente tu sistema tenga un hueco de seguridad gigante... no importa lo que hagas, js será ejecutado si asi el usuario lo desea, y si es un ataque contra tu seguridad es posible que ni si quiera js esté involucrado sino métodos que te hagan creer que es realmente un navegador y que la llamada venga de donde quiera, a fin de cuenta solo son cabeceras del navegador y pueden ser cambiadas a voluntad con un mínimo de conocimientos
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
|
engel lex
|
Lo que buscas son códigos anti-csrf, normalmente es un campo que contiene un código generado a la hora de cargar la página y luego (en el caso de AJAX), se devuelven más codigos segun se van procesado requests.
sin embargo a nivel de seguridad usualmente son mas para evitar que usuarios inexpertos salten la seguridad XD a fin de cuenta un sistema para romper la seguridad incluso en javascript va a buscar enviar sus csrf correctamente XD
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
#!drvy
|
Lo más útil de los anticsrf (aparte de su principal cometido que es evitar ejecución de acciones indeseadas desde sitios de terceros), es que te obligan a pasar por una "pasarela" antes de ejecutar/llegar a tu destino. Por supuesto, no van a evitar que el "atacante" llegue a su destino final, pero si consiguen que tenga que pasar antes por otro sitio... así mantienes un control de flujo bastante útil y puedes saber perfectamente de donde llega un request u otro.
Saludos
|
|
|
En línea
|
|
|
|
engel lex
|
Lo más útil de los anticsrf (aparte de su principal cometido que es evitar ejecución de acciones indeseadas desde sitios de terceros), es que te obligan a pasar por una "pasarela" antes de ejecutar/llegar a tu destino. Por supuesto, no van a evitar que el "atacante" llegue a su destino final, pero si consiguen que tenga que pasar antes por otro sitio... así mantienes un control de flujo bastante útil y puedes saber perfectamente de donde llega un request u otro.
Saludos
esto es muy cierto! sin embargo desde el punto de vista de lo que quiere el usuario (evitar que el usuario use su navegador XD ) esto no es tan util, sería mas util usar telex, fax o algo asi XD
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Leguim
Desconectado
Mensajes: 720
|
No quiero que pase esto... Función JS: function Enviar_Mensaje(cadena, user) { // cadena = Mensaje que enviará // user = id del usuario el cual recibirá dicho mensaje $.ajax({ // etc }) .done({ // etc }) }
Después va a la consola del navegador y escribe "Enviar_Mensaje('123', 7);" Esto no tiene porque ser un problema de seguridad, para nada... pero ahora imaginate que nose alguna función lo que haga sea dar un rango administrativo "Hacer_Admin(id_user);" se escriba su ID... por supuesto puedo preguntar antes siempre si la persona que esta queriendo dar admin a alguien es un admin.. pero lo que quiero que vean es la vulnerabilidad que existe y que por eso quiero hacer eso.. Pero como no es recomendable hacerlo estoy tratando de obtener la url de la pagina que llamo al fichero.. por supuesto esto no arregla el problema simplemente es una cerradura más.. me queda revisar fichero por fichero y validar todo con php antes de realizar cualquier cosa. La solución a mi tema es obtener la url desde JS y enviarla por parametro y usarlo en el fichero ajax pero estamos en la misma porque cualquiera puede editar eso.
|
|
« Última modificación: 19 Agosto 2019, 23:43 pm por MiguelCanellas »
|
En línea
|
|
|
|
#!drvy
|
La solución a mi tema es obtener la url desde JS y enviarla por parametro y usarlo en el fichero ajax pero estamos en la misma porque cualquiera puede editar eso. Sigues pensando en restringir al usuario en su entorno. Insisto, en JS no puedes restringir nada. Si vas a dar permisos de admin (por ejemplo), haz la consulta AJAX y en el propio PHP comprueba si el usuario puede dar esos permisos y si el que los recibe es el que el usuario dice. Implementa sesiones y estructuras de control. Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como puedo obtener las contraseñas ¿? Resuelto
Hacking
|
necro1991
|
4
|
5,019
|
30 Noviembre 2010, 15:23 pm
por sexyta
|
|
|
[Resuelto] [Newbie] No puedo acceder a objeto JSON enviado por AJAX
PHP
|
iGust4v0x
|
8
|
4,976
|
14 Enero 2015, 21:46 pm
por iGust4v0x
|
|
|
[Resuelto] Como llamar a una función php desde ajax
PHP
|
yoelrodguez
|
2
|
4,183
|
12 Mayo 2015, 01:06 am
por yoelrodguez
|
|
|
[Resuelto] Como puedo obtener el validation_status
PHP
|
shamaka
|
1
|
2,901
|
12 Mayo 2018, 19:29 pm
por shamaka
|
|
|
[Resuelto]: ¿Como puedo obtener el tamaño de una imagen/archivo y validarlo?
PHP
|
Leguim
|
4
|
4,362
|
30 Agosto 2019, 21:07 pm
por Leguim
|
|