Foros del Web » Programando para Internet » PHP »

enviar password a un .htaccess

Estas en el tema de enviar password a un .htaccess en el foro de PHP en Foros del Web. Hola gente: Antes que nada, pido disulpas si este tema no es "estrictamente" de PHP, pero esta clase de archivos (.htaccess) se utiliza mucho y ...
  #1 (permalink)  
Antiguo 24/03/2005, 14:36
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
enviar password a un .htaccess

Hola gente:

Antes que nada, pido disulpas si este tema no es "estrictamente" de PHP, pero esta clase de archivos (.htaccess) se utiliza mucho y se ha hablado bastante aqui...

Has visto que en casi todo servicio de hosting tenemos la posibilidad de proteger directorios con usuario y contraseña, estos generan un archivo .htaccess y otro .passwd (generalmente).

Mi pregunta es si es posible acceder a dichos archivos enviando los datos (user y pass) directamente por el link (obviamente, esto estaria oculto, en forma de include).

Para que quiero hacer esto?

Estoy tratando de hacer una Web modular, el problema es que cualquiera podrá acceder a los archivos del modulo sin estar en el sitio (es decir, si un modulo esta en http://www.dominio.com/modulos/noticias.php, cualquiera puede ir a noticias.php en lugar de llamarlo desde el sitio...), esto generaria errores (javascriot, css, etc) que no quiero que ocurran.

El problema es que no puedo proteger los directorios ya que a ellos llego en forma de include, así:

if ($_GET['mod'] == "news") { include("http://www.dominio.com/modulos/noticias.php"); } (obviamente, no son if, es un swicht con case..., pero este es un ejemplo)

y si protejo los directorios (en este caso "modulos") el include me envía un error de este tipo:

Cita:
Warning: main(http://www.dominio.com/modulos/noticias.php): failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required in /home/user/public_html/index.php on line 98
Se va entendiendo?, tengo entendido que si el include lo hago de esta forma: include("modulos/noticias.php"); el error de autentificación no aparece, el tema es que si no uso la URL completa, me envía error cuando hago includes con variables (ejemplo: include("news.php?id=3"); ), el error es el siguiente:

Cita:
Warning: main(news.php?id=3) failed to open stream: No such file or directory in /home/user/public_html/index.php on line 92
En fin, creo que fui bastante claro, necesitaría saber como hacer para que los usuarios que quiera acceder al archivo del modulo, no puedan hacerlo, claro, sin que me envié errores...

Realmente estoy "atascado" aquí...

Saludos y gracias de antemano

PD: Perdon por lo largooo del post
__________________
I Love Programming...
  #2 (permalink)  
Antiguo 24/03/2005, 14:45
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Al inicio de cada modulo puedes comparar el nombre del archivo con el archivo cargado en la barra de direcciones. Si son iguales significa que el visitante está accediendo al módulo directamente, y le puedes imprimir un mensajeo redireccionarlo.

Ejemplo para el modulo noticias.php

<?php
if(basename($_SERVER['PHP_SELF']){
die("Acceso no autorizado");
}
//resto del codigo de noticias.php
?>
__________________
El conocimiento es libre: Movimiento por la Devolución
  #3 (permalink)  
Antiguo 24/03/2005, 15:42
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Esa es una idea que tenia, pero trataba de buscar alguna otra solución más "global" así no tener que agregar código (aunque sea un include) a todos los módulos.

Mi intención era tratar de poner todos los módulos dentro de una carpeta que este debajo del árbol de la Raíz del sitio (es decir, /home/user/modulos/ en lugar de /home/user/public_html/modulos), de esta forma solo yo podría acceder a dichos archivos, el tema viene con las variables, si pongo include("/home/user/modulos/news.php?id=3"); me envía ese "bendito" error...

Veré si alguien me da algún otro tipo de solución y sino, deberé implementar la que tu me das, de comparar el nombre del archivo..

Gracias.
__________________
I Love Programming...

Última edición por FuLaNo_; 24/03/2005 a las 15:46
  #4 (permalink)  
Antiguo 24/03/2005, 17:58
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Lo otro que se me ocurre es, mediante expresiones regulares en el .htaccess, reescribir la url cada vez que alguien intente acceder a cualquier archivo d ela carpeta modulos:

Y si no me equivoco el .htaccess debiera ser asi (asumiendo que la carpeta "modulos" está en el directorio raiz y que index.php es tu homepage)

RewriteEngine on
ReqriteRule /modulos/.* /index.php

Entonces cada vez que alguien intente acceder a cualquier archivo de la carpeta "modulos" el servidor va a asumir que le esta pidiendo cargar el archivo index.php (tu homepage), o puedes decirle que en vez de index.php cargue un archivo de error
__________________
El conocimiento es libre: Movimiento por la Devolución
  #5 (permalink)  
Antiguo 24/03/2005, 18:39
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Sorry, el .htaccess es asi:

RewriteEngine on
RewriteRule ^modulos/.* index.php

Tal como te decia, eso significa que si alguien tipea en la barra de direcciones:

http://www.tusitio.com/modulos
http://www.tusitio.com/modulos/algunarchivo.php

el servidor va a asumir que le esta pidiendo cargar el archivo index.php (que es tu homepage)
__________________
El conocimiento es libre: Movimiento por la Devolución
  #6 (permalink)  
Antiguo 24/03/2005, 18:55
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Pero cuando yo lo pida con include, no me enviaria al index.php a mi tambien?
__________________
I Love Programming...
  #7 (permalink)  
Antiguo 24/03/2005, 19:09
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Estuve haciendo la prueba (porque despues de haber posteado quedé con la duda) y me funcionó el include sin problemas.

No sé mucho sobre el rewrite_mod así que no sabría darte una respuesta más concreta.
__________________
El conocimiento es libre: Movimiento por la Devolución
  #8 (permalink)  
Antiguo 24/03/2005, 19:26
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Aun no lo pude hacer funcionar

Mis modulos estan en:
http://www.dominio.com/php/modulos/
y el index esta una carpeta arriba (http://www.dominio.com/php/index.php), como seria?

Yo tampoco entiendo mucho de rewrite_mod, voy a ver si encuentro algun tutorial en castellano...

Saludos
__________________
I Love Programming...
  #9 (permalink)  
Antiguo 24/03/2005, 20:37
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
A ver... si el .htaccess lo subiste al directorio raiz del sitio, y la carpeta modulos esta dentro de la carpeta "php" (que a su vez está dentro del directorio raiz), en la expresaion regular del .htaccess debes agregar la carpeta "php" en la ruta.

RewriteEngine on
RewriteRule ^php/modulos/.* php/index.php
__________________
El conocimiento es libre: Movimiento por la Devolución
  #10 (permalink)  
Antiguo 24/03/2005, 20:43
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
no no, el .htaccess lo tengo en la misma carpeta MODULOS
Asi:
http://www.dominio.com/php/modulos/.httaccess
y la principal en
http://www.dominio.com/php/index.php
__________________
I Love Programming...
  #11 (permalink)  
Antiguo 24/03/2005, 20:57
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
He probado de esta forma:
RewriteEngine on
RewriteRule ^modulos/.* index.php

Y nada..., Tambien probe así:

RewriteEngine on
RewriteBase php/
RewriteRule ^modulos/.* index.php

En este caso funciona bien, solo que no me redirecciona al index.php (me marca error 500, que es lo que yo tengo para el noindex (cuando no hay index en la carpeta)), pero si accedo por include funciona bien, por lo que si lo demás no funciona, usare esto =P

No se porque no redirecciona al index...
__________________
I Love Programming...

Última edición por FuLaNo_; 24/03/2005 a las 21:00
  #12 (permalink)  
Antiguo 24/03/2005, 21:06
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
... El problema viene cuando intento acceder con la URL completa por include (Es necesario para pasar variables...), alli me sale el mismo error que cuando intento acceder desde el navegador

Creo que este recuerso no me servirá =/
__________________
I Love Programming...
  #13 (permalink)  
Antiguo 24/03/2005, 21:19
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
Mmmm... por lo que tengo entendido, para pasar una URL completa en un "include" debe ser la ruta fisica dentro del servidor y no la ruta http (ya que include no permite eso).

Y por otro lado, no entendi bien eso de pasar variables en un include, ya que eso no sep uede, porque el include considera esas variables como parte del nombre del archivo que quieres incluir.

por ejemplo si usas:

include('archivo.php?id=10'); el servidor va a buscar el archivo "archivo.php?id=10" que obviamente no existe.
__________________
El conocimiento es libre: Movimiento por la Devolución
  #14 (permalink)  
Antiguo 24/03/2005, 23:31
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Por eso, si pones archivo.php?id=10 te da error (no existe el archivo), pero si pones http://www.dominio.com/archivo.php?id=10, funciona correctamente, por eso, en casos de pasar variables, uso la URL completa.

Igualmente creo que esto puedo evitarlo, por lo que, si nadie aporta otra solución, usaré la tuya.
__________________
I Love Programming...
  #15 (permalink)  
Antiguo 25/03/2005, 10:26
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
A ver vamos recapitulando:

En la carpeta "php" tienes el ".htaccess", un "index.php" y la carepta "modulos" con los modulos.

El .htaccess te debiera funcionar asi (lo probé)

RewriteEngine on
RewriteRule ^modulos/.* index.php


Por lo menos en el servidor local no necesito ponerle un RewriteBase ya que solito asume que la base es "php"

Y lo otro: porqué, en vez de pasar variables dentro del include, no la pasas directamente junto a la variable "mod"???

index.php?mod=news&id=10

Es decir cualquier variable que pases via GET, la deberias pasar junto a "mod" en vez d epasarlas dentro del include.
__________________
El conocimiento es libre: Movimiento por la Devolución
  #16 (permalink)  
Antiguo 25/03/2005, 13:19
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
Pues si, ahora estoy pasando las variables directamente por la URL.

En fin, el .htaccess como tu lo haces no me funciona (abre la pagina normalmente). Apenas saco el RewriteBase ya deja de funcionar, quizas sea la configuración de mi servidor, no lo entiendo... El problema es que con el .htacces que estoy usando no me redirecciona.. aunque tampoco es un gran problema ya que puedo hacer que la pagina de error 500 sea la que me redireccione al home...
__________________
I Love Programming...
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 08:03.