Foros del Web » Programando para Internet » PHP »

Proteger .php cargado con Ajax

Estas en el tema de Proteger .php cargado con Ajax en el foro de PHP en Foros del Web. Estoy haciendo un select que carga un formulario distinto según la opción. Estos formularios se encuentran en un archivo externo bajo un switch y me ...
  #1 (permalink)  
Antiguo 30/03/2010, 18:58
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Proteger .php cargado con Ajax

Estoy haciendo un select que carga un formulario distinto según la opción. Estos formularios se encuentran en un archivo externo bajo un switch y me los traigo con $_GET:

Código HTML:
http://sitio.com/externo.php?opcion=perros

http://sitio.com/externo.php?opcion=gatos
Todo funciona bien, excepto que esa página externa me deja los campos al descubierto cuando se accesa de forma directa. Es decir, externo.php no muestra nada, pero externo.php?opcion=perros sí muestra todo el html ¿Cómo hago para proteger un contenido bajo condiciones como esas?.
  #2 (permalink)  
Antiguo 30/03/2010, 19:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Proteger .php cargado con Ajax

Puedes verificar si la persona escribió directamente en el navegador usando $_SERVER["PHP_SELF"] o usando htaccess para que evitar que vean ese archivo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 30/03/2010, 19:08
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Proteger .php cargado con Ajax

Gracias abimaelrc, en este momento estoy desarrollándolo en local y descubrí que puede accesarse de esa forma.

No está mal la idea del htaccess, no se me había ocurrido. A ver cómo me va por esa vía; ojalá no afecte la llamada que hace el ajax, ya que la protección vía php (define > defined) también inutiliza al ajax (hasta ahora).
  #4 (permalink)  
Antiguo 30/03/2010, 19:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Proteger .php cargado con Ajax

No afecta si le indicas en el htaccess que toda dirección que no sea el dominio en que estoy no acceda directamente.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Última edición por abimaelrc; 30/03/2010 a las 19:18
  #5 (permalink)  
Antiguo 30/03/2010, 19:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Proteger .php cargado con Ajax

Mira este ejemplo para que tengas una idea
Código Apache:
Ver original
  1. # % -> esto es para evitar el error que produce el highlight con el porciento, esta línea la pueden quitar.
  2. RewriteEngine On
  3. RewriteCond %{HTTP_REFERER} !^http://localhost.*$ [NC]
  4. RewriteRule .*\.(css|js)$ http://localhost/b.php [R,NC]
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 30/03/2010, 19:26
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Proteger .php cargado con Ajax

Te agradezco la ayuda abimaelrc, probaré de esa forma.

Saludos.
  #7 (permalink)  
Antiguo 04/04/2010, 07:22
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Proteger .php cargado con Ajax

Al final lo logré con php. El código va en el archivo llamado por ajax. Entre otras acciones metí el echo como parte del if y eso hizo que el contenido se ocultara cuando es accesado directamente:

Código PHP:
Ver original
  1. $var = null;
  2. if(empty($_GET['opcion'])) {
  3.   $var ='';
  4.   die ('Aquí no hay nada');
  5. } else {
  6.   if(isset($_POST['ttp_target'])) {
  7.     $id = $_GET['opcion'];
  8.     switch ($id) {
  9.       case 'text':
  10.         $var .= 'hola';
  11.       break;
  12.       case 'img':
  13.         $var .= 'que tal';
  14.       break;
  15.       case 'link':
  16.         $var .= 'hey';
  17.       break;
  18.     }
  19.     echo $var;
  20.   }
  21. }
  #8 (permalink)  
Antiguo 04/04/2010, 08:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Proteger .php cargado con Ajax

también, en todo caso puedes comprobar si la petición esta hecha con Ajax...
Código PHP:
if ( ! empty($_SERVER['HTTP_X_REQUESTED_WITH']))
{
    if (
$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'// ...

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 04/04/2010, 11:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Proteger .php cargado con Ajax

Es verdad que logras gran parte de evitar que te verifiquen lo que tienes en esa página, verificando si se recibe el dato con $_POST. Pero yo puedo aún enviar datos y verificar lo que tienes usando cURL o algún socket, es más hasta creando un formulario via post y enviando los datos que tienes declarados puedo ver lo que tienes. Creo que si unes lo que te indicó pateketrueke y el htaccess, evitas si no todas la mayoria de las veces que la persona vea lo que tienes en esa página.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 04/04/2010, 12:15
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Proteger .php cargado con Ajax

Pateketrueke, gracias por el dato.

Cita:
Iniciado por abimaelrc Ver Mensaje
Es verdad que logras gran parte de evitar que te verifiquen lo que tienes en esa página, verificando si se recibe el dato con $_POST. Pero yo puedo aún enviar datos y verificar lo que tienes usando cURL o algún socket, es más hasta creando un formulario via post y enviando los datos que tienes declarados puedo ver lo que tienes.
Bueno, el sistema en el cual lo tengo implementado cuenta con varias formas de validación (incluyendo nonce fields y chequeo de referers). Si bien no garantiza al 100% la seguridad, al menos creo que impide un ataque por la vía que mencionas.

http://codex.wordpress.org/Function_...wp_nonce_field

Etiquetas: ajax, proteger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:21.