Proteger carpeta admin con htaccess

281 views
Skip to first unread message

niobi...@gmail.com

unread,
Mar 4, 2010, 8:33:08 PM3/4/10
to CodeIgniter-spanish
Hola,

Mi intención es proteger una carpeta (/admin), con un .htaccess / .
htpasswd. Saben si se puede?

En el foro de la web de CI veo que hay muchas entradas que hablan de
ello pero ninguna lo explica con claridad. Teneis algun ejemplo o me
podriais echar un cable?

Muchas gracias a todos!

Ever Daniel Barreto Rojas

unread,
Mar 4, 2010, 9:47:05 PM3/4/10
to codeignit...@googlegroups.com
El día 4 de marzo de 2010 22:33, umpal...@gmail.com
<niobi...@gmail.com> escribió:

> Mi intención es proteger una carpeta (/admin), con un .htaccess / .
> htpasswd. Saben si se puede?

Si tu hoster te permite, podés hacer esto:
http://www.javascriptkit.com/howto/htaccess3.shtml

y generar los passwords con esto:
http://tools.dynamicdrive.com/password/

Saludos,

---
Ever Daniel Barreto Rojas
everdaniel at gmail dot com
www.everdaniel.com

iMefisto

unread,
Mar 5, 2010, 6:45:26 AM3/5/10
to codeignit...@googlegroups.com
Hola. En mi último proyecto empecé a usar este (no es de mi autoría, conserva el nombre del que lo escribió):

<IfModule mod_rewrite.c>
    RewriteEngine On
    #RewriteBase /

    #Removes access to the system folder by users.
    #Additionally this will allow you to create a System.php controller,
    #previously this would not have been possible.
    #'system' can be replaced if you have renamed your system folder.
    RewriteCond %{REQUEST_URI} ^system.*
    #RewriteRule ^(.*)$ index.php?/$1 [L]
    RewriteRule ^(.+)$ index.php?$1 [L]

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    # If we don't have mod_rewrite installed, all 404's
    # can be sent to index.php, and everything works as normal.
    # Submitted by: ElliotHaughin

    ErrorDocument 404 /error.php
</IfModule>


No he tenido tiempo aún de probar a fondo para ver si introduce algún problema/vulnerabilidad, pero funciona.

Observaciones:

Tengo en la carpeta controllers lo referido a página principal y en controllers/admin los referidos al admin. En las views tengo una división similar. la carpeta models es compartida por todos.

Estando en un controller del admin, para acceder a otro debo indicar la carpeta admin, ejemplo: redirect('admin/otro_controller")

Hasta ahora no tuve problemas, pero como dije más arriba, falta testeo profundo.
Saludos!





--
---
Para anular la suscripción a este grupo, envía un mensaje a
codeigniter-spa...@googlegroups.com
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/codeigniter-spanish?hl=es.

iMefisto

unread,
Mar 5, 2010, 6:47:07 AM3/5/10
to codeignit...@googlegroups.com
Ah perdón. un detalle: esto no proteje la carpeta admin, leí mal.

Protejo los controllers del admin con un controller específico.
Mis disculpas.

niobi...@gmail.com

unread,
Mar 11, 2010, 6:13:05 AM3/11/10
to CodeIgniter-spanish
Hace la carpeta protegida no es problema ya que mi hosting lo permite
desde el panel de control.
El tema esta en que una vez coloco los controladores en esa carpeta
como que pierden la estructura de la web.

On 5 Març, 03:47, Ever Daniel Barreto Rojas <everdan...@gmail.com>
wrote:
> El día 4 de marzo de 2010 22:33, umpalump...@gmail.com
> <niobigra...@gmail.com> escribió:

<<P431i7o>>

unread,
Mar 11, 2010, 6:24:28 AM3/11/10
to codeignit...@googlegroups.com
alguien me explica para que querrias proteger la carpeta admin??

eso no lo haria inaaccesible para ti tambien???

--
---
Para anular la suscripción a este grupo, envía un mensaje a
codeigniter-spa...@googlegroups.com
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/codeigniter-spanish?hl=es.



--
Saludos Cordiales
---------------------------------------------
Pablo F.Ruiz Diaz Rios
Departamento Web
RedSoft Informática & Networking

Página web: http://www.rs.com.py
Celphone: 595-961-882-130
messenger: http://tinymailto.com/p431i7omsn

Jairo Ochoa

unread,
Mar 11, 2010, 6:51:30 AM3/11/10
to codeignit...@googlegroups.com
Se protege con clave y se accede con usuario y contraseña.
No tiene sentido que cualquiera pueda entrar y acceda a los datos o cambie los contenidos de la web.
Eso entiendo yo.

<<P431i7o>>

unread,
Mar 11, 2010, 6:57:35 AM3/11/10
to codeignit...@googlegroups.com
claro eso lo entiendo, y es obvio... pero me refiero a porque hacer eso con htaccess???

y porque no hacerlo con una autenticacion de la base de datos como todas las aplicaciones normales diré...

wilmer Abreu

unread,
Mar 11, 2010, 7:54:50 AM3/11/10
to codeignit...@googlegroups.com, codeignit...@googlegroups.com
Lo mismo opino

Wilmer Abreu

Jairo Ochoa

unread,
Mar 11, 2010, 10:19:05 AM3/11/10
to codeignit...@googlegroups.com

Ya veo, son dos opciones válidas.

Hacerlo sobre servidor es más sencillo, ya que con una única operación proteges todo lo que exista dentro.
Para paneles de control sencillos, áreas reservadas monousuario, es una opción también válida.

Haciéndolo sobre base de datos tienes que comprobar cada una de las páginas que vas añadiendo, lo que implica más trabajo.

Veo ventajoso la segunda opción porque permitiría multiusuarios e incluso con distintos niveles de acceso a la aplicación, aunque no podrás proteger archivos de imagen, pdf, etc, etc, sólo páginas con código php que se validen contra la base de datos.

No se cuales son las intenciones de Ever, pero lo que plantea en su pregunta es factible.

En cualquier caso ¿en qué afecta a CI?

Saludos,

Fásiko

unread,
Mar 11, 2010, 10:33:32 AM3/11/10
to codeignit...@googlegroups.com
Veamos:

La opción de proteger cierta ruta mediante contraseña con apache, es realmente rápida. Pero nos encontramos con el siguiente problema:

Por defecto, apache, cuando recibe una petición del tipo http://midominio.com/admin, comprueba si existe la carpeta admin y si es así, intenta cargar los archivos por defecto de la misma (normalmente index.html, index.htm, index.php, etc...).
Si dicha carpeta no se encontró, comprueba si hay algún tipo de regla en .htacces por si es dinámico (el caso de codeigniter). Este es el momento en el que empieza a cargar el framework, ya que no se encontró dicha carpeta y lo redirige todo a través del index.php.

Como se aprecia, no hay mucha compatibilidad entre un modo y otro. Osease, si queremos proteger la carpeta admin, tiene que ser una carpeta física en la que colocaremos el .htaccess. Pero al usarla "virtualmente" a través de codeigniter, no podemos montar dicho .htaccess ya que no existe dicha carpeta.

Así que afecta a codeigniter en que no se puede utilizar de la forma tradicional. 


Me queda la duda de si se podría introducir otro codeigniter dentro de esta carpeta. Osease, tenemos un codeigniter en la raiz donde desarrollamos todo el sitio público, y luego crear una carpeta admin/ donde meteremos otro codeigniter para el desarrollo de la administración. En teoría, no creo que deba haber ningún tipo de problema en este caso (en teoría digo ya que no lo he probado). No sé si funcionarían bien las redirecciones, pero ya que es la parte de administración, podríamos utilizar una url del tipo http://midominio.com/admin/index.php/controlador/funcion sin mucha preocupación.


De todas formas, yo recomiendo encarecidamente utilizar algún sistema/librería como backendpro. He utilizado en un par de proyectos dicho código y a pesar de algunas limitaciones, es bastante flexible en el uso de ACL.


Saludos...

Jairo Ochoa

unread,
Mar 11, 2010, 11:08:30 AM3/11/10
to codeignit...@googlegroups.com

Ajá!, claro, tienes toda razón.
Así que restricción de directorio la dejamos sólo para aplicacione php, pero con frameworks y directorios virtuales entiendo la problemática.

Saludos

Nokrosis

unread,
Mar 11, 2010, 4:09:16 PM3/11/10
to codeignit...@googlegroups.com
Separa tu aplicación de admin de la aplicación que ve el usuario final. 
Pon tu aplicacion de admin en otra carpeta, con todo y el index y protégela con htaccess. y tu aplicación de usuario en la carpeta principal.

finalmente apunta a tu carpeta system y application en cada uno de los index.php de CI.

2010/3/11 Jairo Ochoa <jairo...@gmail.com>

niobi...@gmail.com

unread,
Apr 19, 2010, 5:51:04 AM4/19/10
to CodeIgniter-spanish
He probado esta opción pero no me acaba de funcionar.

Alguien tiene un ejemplo?

Gracias!

On 11 Març, 23:09, Nokrosis <nokro...@gmail.com> wrote:
> Separa tu aplicación de admin de la aplicación que ve el usuario final.
> Pon tu aplicacion de admin en otra carpeta, con todo y el index y protégela
> con htaccess. y tu aplicación de usuario en la carpeta principal.
>
> finalmente apunta a tu carpeta system y application en cada uno de los
> index.php de CI.
>
> 2010/3/11 Jairo Ochoa <jairo.oc...@gmail.com>
> >>http://midominio.com/admin/index.php/controlador/funcionsin mucha
> >> preocupación.
>
> >> De todas formas, yo recomiendo encarecidamente utilizar algún
> >> sistema/librería como backendpro. He utilizado en un par de proyectos dicho
> >> código y a pesar de algunas limitaciones, es bastante flexible en el uso de
> >> ACL.
>
> >> Saludos...
>
> >> El 11 de marzo de 2010 16:19, Jairo Ochoa <jairo.oc...@gmail.com>escribió:
>
> >>> Ya veo, son dos opciones válidas.
>
> >>> Hacerlo sobre servidor es más sencillo, ya que con una única operación
> >>> proteges todo lo que exista dentro.
> >>> Para paneles de control sencillos, áreas reservadas monousuario, es una
> >>> opción también válida.
>
> >>> Haciéndolo sobre base de datos tienes que comprobar cada una de las
> >>> páginas que vas añadiendo, lo que implica más trabajo.
>
> >>> Veo ventajoso la segunda opción porque permitiría multiusuarios e incluso
> >>> con distintos niveles de acceso a la aplicación, aunque no podrás proteger
> >>> archivos de imagen, pdf, etc, etc, sólo páginas con código php que se
> >>> validen contra la base de datos.
>
> >>> No se cuales son las intenciones de Ever, pero lo que plantea en su
> >>> pregunta es factible.
>
> >>> En cualquier caso ¿en qué afecta a CI?
>
> >>> Saludos,
>
> >>> El 11 de marzo de 2010 13:54, wilmer Abreu <santodomingonl...@gmail.com>escribió:
>
> >>> Lo mismo opino
>
> >>>> Wilmer Abreu
> >>>> I...@wadlabs.com
> >>>> 829.5201003
>
> >>>> El 11/03/2010, a las 07:57 a.m., "<<P431i7o>>" <
> >>>> pablito.feder...@gmail.com> escribió:
>
> >>>> claro eso lo entiendo, y es obvio... pero me refiero a porque hacer eso
> >>>> con htaccess???
>
> >>>> y porque no hacerlo con una autenticacion de la base de datos como todas
> >>>> las aplicaciones normales diré...
>
> >>>> El 11 de marzo de 2010 08:51, Jairo Ochoa < <jairo.oc...@gmail.com>
> >>>> jairo.oc...@gmail.com> escribió:
>
> >>>>> Se protege con clave y se accede con usuario y contraseña.
> >>>>> No tiene sentido que cualquiera pueda entrar y acceda a los datos o
> >>>>> cambie los contenidos de la web.
> >>>>> Eso entiendo yo.
>
> >>>>> El 11 de marzo de 2010 12:24, <<P431i7o>> <<pablito.feder...@gmail.com>
> >>>>> pablito.feder...@gmail.com> escribió:
>
> >>>>>> alguien me explica para que querrias proteger la carpeta admin??
>
> >>>>>> eso no lo haria inaaccesible para ti tambien???
>
> >>>>>> El 11 de marzo de 2010 08:13, <umpalump...@gmail.com>
> >>>>>> umpalump...@gmail.com < <niobigra...@gmail.com>niobigra...@gmail.com>escribió:
>
> >>>>>> Hace la carpeta protegida no es problema ya que mi hosting lo permite
> >>>>>>> desde el panel de control.
> >>>>>>> El tema esta en que una vez coloco los controladores en esa carpeta
> >>>>>>> como que pierden la estructura de la web.
>
> >>>>>>> On 5 Març, 03:47, Ever Daniel Barreto Rojas <everdan...@gmail.com>
> >>>>>>> wrote:
> >>>>>>> > El día 4 de marzo de 2010 22:33, umpalump...@gmail.com
> >>>>>>> > <niobigra...@gmail.com> escribió:
>
> >>>>>>> > > Mi intención es proteger una carpeta (/admin), con un .htaccess /
> >>>>>>> .
> >>>>>>> > > htpasswd. Saben si se puede?
>
> >>>>>>> > Si tu hoster te permite, podés hacer esto:<http://www.javascriptkit.com/howto/htaccess3.shtml>
> >>>>>>>http://www.javascriptkit.com/howto/htaccess3.shtml
>
> >>>>>>> > y generar los passwords con esto:<http://tools.dynamicdrive.com/password/>
> >>>>>>>http://tools.dynamicdrive.com/password/
>
> >>>>>>> > Saludos,
>
> >>>>>>> > ---
> >>>>>>> > Ever Daniel Barreto Rojas
> >>>>>>> > everdaniel at gmail dot <http://comwww.everdaniel.com>
> >>>>>>> comwww.everdaniel.com
>
> >>>>>>> --
> >>>>>>> ---
> >>>>>>> Para anular la suscripción a este grupo, envía un mensaje a
> >>>>>>>  <codeigniter-spa...@googlegroups.com>
> >>>>>>> codeigniter-spa...@googlegroups.com
> >>>>>>> Para obtener más opciones, visita este grupo en
> >>>>>>>  <http://groups.google.com/group/codeigniter-spanish?hl=es>
> >>>>>>>http://groups.google.com/group/codeigniter-spanish?hl=es.
>
> >>>>>> --
> >>>>>> Saludos Cordiales
> >>>>>> ---------------------------------------------
> >>>>>> Pablo F.Ruiz Diaz Rios
> >>>>>> Departamento Web
> >>>>>> RedSoft Informática & Networking
>
> >>>>>> Página web: <http://www.rs.com.py>http://www.rs.com.py
> >>>>>> Celphone: 595-961-882-130
> >>>>>> messenger: <http://tinymailto.com/p431i7omsn>
> >>>>>>http://tinymailto.com/p431i7omsn
>
> >>>>>>  --
> >>>>>> ---
> >>>>>> Para anular la suscripción a este grupo, envía un mensaje a
> >>>>>>  <codeigniter-spa...@googlegroups.com>
> >>>>>> codeigniter-spa...@googlegroups.com
> >>>>>> Para obtener más opciones, visita este grupo en
> >>>>>>  <http://groups.google.com/group/codeigniter-spanish?hl=es>
> >>>>>>http://groups.google.com/group/codeigniter-spanish?hl=es.
>
> >>>>>  --
> >>>>> ---
> >>>>> Para anular la suscripción a este grupo, envía un mensaje a
> >>>>>  <codeigniter-spa...@googlegroups.com>
> >>>>> codeigniter-spa...@googlegroups.com
> >>>>> Para obtener más opciones, visita este grupo en
> >>>>>  <http://groups.google.com/group/codeigniter-spanish?hl=es>
> >>>>>http://groups.google.com/group/codeigniter-spanish?hl=es.
>
> >>>> --
> >>>> Saludos Cordiales
> >>>> ---------------------------------------------
> >>>> Pablo F.Ruiz Diaz Rios
> >>>> Departamento Web
> >>>> RedSoft Informática & Networking
>
> >>>> Página web: <http://www.rs.com.py>http://www.rs.com.py
> >>>> Celphone: 595-961-882-130
> >>>> messenger: <http://tinymailto.com/p431i7omsn>
> >>>>http://tinymailto.com/p431i7omsn
>
> >>>> --
> >>>> ---
> >>>> Para anular la suscripción a este grupo, envía un mensaje a
> >>>>  <codeigniter-spa...@googlegroups.com>
> >>>> codeigniter-spa...@googlegroups.com
> >>>> Para obtener más opciones, visita este grupo en
> >>>>  <http://groups.google.com/group/codeigniter-spanish?hl=es>
Reply all
Reply to author
Forward
0 new messages