FAQ
Si hago una aplicacion web PHP que sera usada por varias 'empresas' y
cada empresa tiene sus 'usuarios' que se autentifican en el sistema
web,
como podria hacer para saber de que 'empresa' viene la peticion ?
Lo unico que se me ocurre es las distintas empresas accedan a la
aplicacion desde un dominio propio, y que la aplicacion PHP pueda
saber desde
que dominio entran las peticiones para identificar la empresa.
Se puede hacer eso con PHP ?
Gracias

Search Discussions

  • Carlos Medina at Dec 18, 2008 at 4:32 pm

    Mario Daniel Carugno schrieb:
    Si hago una aplicacion web PHP que sera usada por varias 'empresas' y
    cada empresa tiene sus 'usuarios' que se autentifican en el sistema
    web,
    como podria hacer para saber de que 'empresa' viene la peticion ?
    Lo unico que se me ocurre es las distintas empresas accedan a la
    aplicacion desde un dominio propio, y que la aplicacion PHP pueda
    saber desde
    que dominio entran las peticiones para identificar la empresa.
    Se puede hacer eso con PHP ?
    Gracias
    Hola Mario,
    si esto se puede hacer tambien de esa forma. Hay muchas maneras de hacer
    esto. Por ejemplo se puede usar un codigo generado unicamente para una
    empresa que sera enviado con la peticion (generalmente un formulario).
    Por ejemplo si necesitas verificar la peticion de un usuario en la
    empresa x pues no necesitarias mas que al generar el formulario de
    entrada enviar un "token" en un "hidden field" que leeras cuando quieras
    verificar al usuario. Esta es la manera mas economica y segura que te
    puedo recomendar.

    Ahora bien, si tu arquitectura te lo deja hacer, sabras al generar el
    formulario ya que empresa estas autentificando no? Por ejemplo si usas
    el Front Controller Pattern sabrias de antemano que estas generando el
    request desde:

    mi-compania.com/login

    que se diferencia de

    mi-otra-compania.con/login

    No se si te he podido ayudar ?

    Saludos

    Carlos Medina
  • Mario Daniel Carugno at Dec 18, 2008 at 4:54 pm
    El día 18 de diciembre de 2008 14:32, Carlos Medina
    <info@simply-networks.de> escribió:
    Mario Daniel Carugno schrieb:
    Si hago una aplicacion web PHP que sera usada por varias 'empresas' y
    cada empresa tiene sus 'usuarios' que se autentifican en el sistema
    web,
    como podria hacer para saber de que 'empresa' viene la peticion ?
    Lo unico que se me ocurre es las distintas empresas accedan a la
    aplicacion desde un dominio propio, y que la aplicacion PHP pueda
    saber desde
    que dominio entran las peticiones para identificar la empresa.
    Se puede hacer eso con PHP ?
    Gracias
    Hola Mario,
    si esto se puede hacer tambien de esa forma. Hay muchas maneras de hacer
    esto. Por ejemplo se puede usar un codigo generado unicamente para una
    empresa que sera enviado con la peticion (generalmente un formulario).
    Por ejemplo si necesitas verificar la peticion de un usuario en la empresa x
    pues no necesitarias mas que al generar el formulario de entrada enviar un
    "token" en un "hidden field" que leeras cuando quieras verificar al usuario.
    Esta es la manera mas economica y segura que te puedo recomendar.
    Pero para eso cada empresa deberia tener una version distinta de la
    aplicacion ?
    En realidad yo quiero que sea una solo aplicacion en un servidor, a la
    cual acceden todos los usuarios de todas las empresas.
  • Martin Scotta at Dec 18, 2008 at 5:03 pm
    La mejor manera es que cada usuario tenga una empresa asociada, podrian ser
    varias, pero para no complicar las cosas una sola.

    Cuando el usuario loguea en el sistema, tomas ese valor y lo guardas como
    una variable de session, y chau pichu.

    Martin
    On Thu, Dec 18, 2008 at 2:54 PM, Mario Daniel Carugno wrote:

    El día 18 de diciembre de 2008 14:32, Carlos Medina
    <info@simply-networks.de> escribió:
    Mario Daniel Carugno schrieb:
    Si hago una aplicacion web PHP que sera usada por varias 'empresas' y
    cada empresa tiene sus 'usuarios' que se autentifican en el sistema
    web,
    como podria hacer para saber de que 'empresa' viene la peticion ?
    Lo unico que se me ocurre es las distintas empresas accedan a la
    aplicacion desde un dominio propio, y que la aplicacion PHP pueda
    saber desde
    que dominio entran las peticiones para identificar la empresa.
    Se puede hacer eso con PHP ?
    Gracias
    Hola Mario,
    si esto se puede hacer tambien de esa forma. Hay muchas maneras de hacer
    esto. Por ejemplo se puede usar un codigo generado unicamente para una
    empresa que sera enviado con la peticion (generalmente un formulario).
    Por ejemplo si necesitas verificar la peticion de un usuario en la empresa x
    pues no necesitarias mas que al generar el formulario de entrada enviar un
    "token" en un "hidden field" que leeras cuando quieras verificar al usuario.
    Esta es la manera mas economica y segura que te puedo recomendar.
    Pero para eso cada empresa deberia tener una version distinta de la
    aplicacion ?
    En realidad yo quiero que sea una solo aplicacion en un servidor, a la
    cual acceden todos los usuarios de todas las empresas.

    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php

    --
    Martin Scotta

    Preferis una copia trucha a un sistema operativo de codigo abierto, legal,
    gratis, documentado y con un potencial enorme, tan solo por que estas
    acostumbrado?
  • Mario Daniel Carugno at Dec 18, 2008 at 5:08 pm

    2008/12/18 Martin Scotta <martinscotta@gmail.com>:
    La mejor manera es que cada usuario tenga una empresa asociada, podrian ser
    varias, pero para no complicar las cosas una sola.
    En ese caso no podrian existir usuarios duplicados en distintas empresas.
    No esta mal, seria poco probable que eso pase.
    Y chau pinela :)
  • Mario Daniel Carugno at Dec 18, 2008 at 5:10 pm
    El día 18 de diciembre de 2008 15:08, Mario Daniel Carugno
    <carugnom@gmail.com> escribió:
    2008/12/18 Martin Scotta <martinscotta@gmail.com>:
    La mejor manera es que cada usuario tenga una empresa asociada, podrian ser
    varias, pero para no complicar las cosas una sola.
    En ese caso no podrian existir usuarios duplicados en distintas empresas.
    No esta mal, seria poco probable que eso pase.
    Y chau pinela :)
    Cuando los usuarios ya existan no hay problemas, pero cuando se
    suscriban como sabra
    el sistema desde que empresa accede ?
  • Julio Herrera - Chilered at Dec 18, 2008 at 5:13 pm
    Por que el administrador que es muy responsable y no tiene partido en la
    aplicación los inscribe muy responsablemente, o verifica la información de
    inscripción o designa a alguien tan responsable como el en cada empresa para
    que inscriba a sus usuarios

    Algo asi

    Julio Herrera

    -----Mensaje original-----
    De: Mario Daniel Carugno
    Enviado el: jueves, 18 de diciembre de 2008 14:10
    Para: php-es@lists.php.net
    Asunto: Re: [PHP-ES] Re: identificar dominio del cliente

    El día 18 de diciembre de 2008 15:08, Mario Daniel Carugno
    <carugnom@gmail.com> escribió:
    2008/12/18 Martin Scotta <martinscotta@gmail.com>:
    La mejor manera es que cada usuario tenga una empresa asociada, podrian
    ser
    varias, pero para no complicar las cosas una sola.
    En ese caso no podrian existir usuarios duplicados en distintas empresas.
    No esta mal, seria poco probable que eso pase.
    Y chau pinela :)
    Cuando los usuarios ya existan no hay problemas, pero cuando se
    suscriban como sabra
    el sistema desde que empresa accede ?

    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php


    __________ Información de NOD32, revisión 3702 (20081218) __________

    Este mensaje ha sido analizado con NOD32 antivirus system
    http://www.nod32.com
  • Mario Daniel Carugno at Dec 18, 2008 at 5:20 pm

    2008/12/18 Sergio Andres Vargas Bautista <segansoft@gmail.com>:
    Una forma es crear un campo extra a la tabla id de usuarios y asignarles la
    empresa de procedencia y de alli hacer la validación de entrada de datos
    para el ingreso a la aplicación.
    Si, pero si los usuarios se pueden dar de alta por si mismos en el sistema,
    no puedo saber de que empresa son en el momento en que se suscriben.
  • Mario Daniel Carugno at Dec 18, 2008 at 5:22 pm

    2008/12/18 Mario Daniel Carugno <carugnom@gmail.com>:
    2008/12/18 Sergio Andres Vargas Bautista <segansoft@gmail.com>:
    Una forma es crear un campo extra a la tabla id de usuarios y asignarles la
    empresa de procedencia y de alli hacer la validación de entrada de datos
    para el ingreso a la aplicación.
    Si, pero si los usuarios se pueden dar de alta por si mismos en el sistema,
    no puedo saber de que empresa son en el momento en que se suscriben.
    Tendria que hacer que los operadores de cada empresa (a los cuales si tengo
    identificados) sean los responsables de asignar usuarios a sus clientes.
    En ese caso estaria bien.

    En todo caso, alguien puede explicarme que problema de seguridad puede
    suponer usar la deteccion del host remoto ?

    Gracias
  • Mario Daniel Carugno at Dec 18, 2008 at 5:35 pm
    El día 18 de diciembre de 2008 15:27, Sergio Andres Vargas Bautista
    <segansoft@gmail.com> escribió:
    Bueno perp pongamosle un poco de orden a tu solicitud...


    Como funciona el logueo de los usuarios?

    Desde un formulario de logueo implementado en tu servidor?

    De esta forma es muy sencillo, porque solo necesitas crear un campo extra en
    tu tabla de Id de usuarios que referencia la empresa o lugar de procedencia
    de los mismos. La validación se encarga de mostrar los detalles.
    Si, se logean desde un formulario implementado en el servidor, pero el
    problema no es el login (de usuarios existentes) sino el alta de usuarios.
    Si los usuarios se pueden dar de alta por si mismos, como se de que
    empresa son ?
    La alternativa es no permitir suscripciones automaticas, sino hechas por los
    operadores de cada empresa.
  • Mario Daniel Carugno at Dec 18, 2008 at 5:47 pm
    El día 18 de diciembre de 2008 15:43, Sergio Andres Vargas Bautista
    <segansoft@gmail.com> escribió:
    Bueno, esa es una solución.

    Recuerda que normalmente cuando son aplicaciones estilo CMS el proceso de
    alta de usuarios es un poco flexible y permite que los usuarios se registren
    por si mismos.

    Entiendo tu inconveniente, pero la verdad estaría muy de acuerdo en delegar
    esta función al operador de cada empresa, así al menos tengo la seguridad de
    que el alta de los usuarios quede hecha con los datos necesarios. Bueno esto
    siempre y cuando los operadores hagan bien su labor :P
    Ok, podria entonces implementar ese esquema y usar
    $_SERVER['REMOTE_HOST'] como una
    validacion adicional para asegurarme de que el usuario accede desde
    donde espero.

    Por cierto, esta lista es muy buena. Me estan dando una gran ayuda.
    Gracias
  • Martin Scotta at Dec 18, 2008 at 6:06 pm
    Podrias implementar un sistema de invitaciones, en donde para que un usuario
    se cree una cuenta tiene que se invitado por otro, por lo que solo se podra
    registrar en la misma empresa que el invitador.

    Otra opcion seria que existan usuarios "creadores" de usuarios, con lo que
    tambien estaria resuelto el tema.

    Por lo que hablas no creo que sea un sistema publico, sino mas bien algo a
    nivel privado, pero a traves de internet. En este tipo de sistemas la
    registracion no es publica, de hecho hay muchos sistemas donde la
    registracion no existe. Si no sos parte de la empresa no tenes acceso al
    sistema, si sos parte igualmente necesitas que una persona responsable te de
    acceso.

    Martin

    2008/12/18 Mario Daniel Carugno <carugnom@gmail.com>
    El día 18 de diciembre de 2008 15:43, Sergio Andres Vargas Bautista
    <segansoft@gmail.com> escribió:
    Bueno, esa es una solución.

    Recuerda que normalmente cuando son aplicaciones estilo CMS el proceso de
    alta de usuarios es un poco flexible y permite que los usuarios se registren
    por si mismos.

    Entiendo tu inconveniente, pero la verdad estaría muy de acuerdo en delegar
    esta función al operador de cada empresa, así al menos tengo la seguridad de
    que el alta de los usuarios quede hecha con los datos necesarios. Bueno esto
    siempre y cuando los operadores hagan bien su labor :P
    Ok, podria entonces implementar ese esquema y usar
    $_SERVER['REMOTE_HOST'] como una
    validacion adicional para asegurarme de que el usuario accede desde
    donde espero.

    Por cierto, esta lista es muy buena. Me estan dando una gran ayuda.
    Gracias

    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php

    --
    Martin Scotta

    Preferis una copia trucha a un sistema operativo de codigo abierto, legal,
    gratis, documentado y con un potencial enorme, tan solo por que estas
    acostumbrado?
  • Mario Daniel Carugno at Dec 18, 2008 at 6:10 pm
    El día 18 de diciembre de 2008 16:06, Martin Scotta
    <martinscotta@gmail.com> escribió:
    Podrias implementar un sistema de invitaciones, en donde para que un usuario
    se cree una cuenta tiene que se invitado por otro, por lo que solo se podra
    registrar en la misma empresa que el invitador.
    Si, es buena idea.
    Otra opcion seria que existan usuarios "creadores" de usuarios, con lo que
    tambien estaria resuelto el tema.
    Serian los responsables de cada empresa.
    Por lo que hablas no creo que sea un sistema publico, sino mas bien algo a
    nivel privado, pero a traves de internet. En este tipo de sistemas la
    registracion no es publica, de hecho hay muchos sistemas donde la
    registracion no existe. Si no sos parte de la empresa no tenes acceso al
    sistema, si sos parte igualmente necesitas que una persona responsable te de
    acceso.
    Asi es, no es algo publico. Es un producto comercial. Lo mejor es que las
    empresas den de alta a sus usuarios, y todo resuelto. Tambien esta buena
    la idea de que los usuarios registrados puedan invitar a otros nuevos.

    Gracias
  • Carlos Medina at Dec 18, 2008 at 9:01 pm

    Mario Daniel Carugno schrieb:
    2008/12/18 Sergio Andres Vargas Bautista <segansoft@gmail.com>:
    Una forma es crear un campo extra a la tabla id de usuarios y asignarles la
    empresa de procedencia y de alli hacer la validación de entrada de datos
    para el ingreso a la aplicación.
    Si, pero si los usuarios se pueden dar de alta por si mismos en el sistema,
    no puedo saber de que empresa son en el momento en que se suscriben.
    Hola Mario,
    Lo que te deseaba explicar como lo puedes resolver tiene un poco que ver
    con "Single-Sign-on". El punto de partida es el mismo si deseas que por
    ejemplo que, en el caso de un cliente que tuve, el usuario accediera a
    su cuenta para ver su perfil, etc, y que luego tuviese la posibilidad de
    pasar a las otras paginas "hermanas" sin tener que volver a colocar el
    password. La solucion esta en crear una arquitectura centralizada que te
    permita con un solo core, correr tantas "instancias" de la aplicacion
    como tu quieras teniendo la posibilidad de usar bibliotecas conjuntas y
    tools conjuntos.

    Te muestro un ejemplo:
    En la siguiente estructura de carpetas tengo dos "mandantes" y un core
    que me soporta la autenticacion.

    mandant1
    controller
    config
    libs
    views
    models

    mandant2
    controller
    config
    libs
    views
    models

    Core
    controller
    libs
    views
    models
    zend
    xtras
    main.php

    En esta estructura por ejemplo mando a travez de htaccess todos los
    requests hacia mandante1 y mandante2. En cada uno de los index.php se
    crea una instancia de main.php. En este caso con banco de datos
    distintos. En esta estructura que tengo hecha con Zend Framework, hago
    controllers como /products o /services [leete la docu para que entiendas
    mejor] para programar en ellas lo que necesito. Pero atencion: El caso
    es que al llegar al controller /login mando los requests no a las
    carpetas mandant1 o 2 sino a core. Aqui implemento la logica necesaria
    para saber de que parte he venido y por ello en que base de datos debo
    buscar sin tener que acceder a otras variables como localhost o algo por
    el estilo.

    Es decir en el momento en que mi controller del mandante le llega el
    request por /login, analiza si existe un parametro llamado por ejemplo
    "toc" y sie es valido, lo envio al controlador /login del core que me
    hace la tarea y me devuelve un ok o un no.

    Espero haberme explicado mejor esta vez. De todas maneras es un tema
    amplio en el que seguro existen mejores cosas de como las hago yo.

    Saludos

    Carlos Medina
  • Sergio Andres Vargas Bautista at Dec 18, 2008 at 4:39 pm
    Puedes documentarte mas en:

    http://www.php.net/reserved.variables.server

    saludos cordiales,

    2008/12/18 Mario Daniel Carugno <carugnom@gmail.com>
    Si hago una aplicacion web PHP que sera usada por varias 'empresas' y
    cada empresa tiene sus 'usuarios' que se autentifican en el sistema
    web,
    como podria hacer para saber de que 'empresa' viene la peticion ?
    Lo unico que se me ocurre es las distintas empresas accedan a la
    aplicacion desde un dominio propio, y que la aplicacion PHP pueda
    saber desde
    que dominio entran las peticiones para identificar la empresa.
    Se puede hacer eso con PHP ?
    Gracias

    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php

    --

    -
    SERGIO ANDRES VARGAS BAUTISTA
    53R610 4NDR35 V4R645 84UT15T4
    Tecnólogo en sistemas
  • Mauricio Cuenca at Dec 18, 2008 at 4:41 pm
    Con la variable global $_SERVER['HTTP_HOST'] puedes identificar el hostname
    y dominio desde el que te están haciendo la petición.


    2008/12/18 Mario Daniel Carugno <carugnom@gmail.com>
    Si hago una aplicacion web PHP que sera usada por varias 'empresas' y
    cada empresa tiene sus 'usuarios' que se autentifican en el sistema
    web,
    como podria hacer para saber de que 'empresa' viene la peticion ?
    Lo unico que se me ocurre es las distintas empresas accedan a la
    aplicacion desde un dominio propio, y que la aplicacion PHP pueda
    saber desde
    que dominio entran las peticiones para identificar la empresa.
    Se puede hacer eso con PHP ?
    Gracias

    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php
  • Mario Daniel Carugno at Dec 18, 2008 at 4:57 pm

    2008/12/18 Mauricio Cuenca <macuenca@gmail.com>:
    Con la variable global $_SERVER['HTTP_HOST'] puedes identificar el hostname
    y dominio desde el que te están haciendo la petición.
    No sera $_SERVER['REMOTE_HOST'] ?

    Gracias
  • Julio Herrera - Chilered at Dec 18, 2008 at 4:43 pm
    Como en Internet es muy simple IMPERSONAR a alguien, lo unico que yo veo de
    forma simple es que en la definición del cliente tu pongas a que empresa
    corresponde, toncs cuando se logee el usuario sabras que corresponde a tal
    empresa ya que en su definición dice que viene de esa, si lo haces por
    dominio o ip lo mas probable que se pueda vulnerar.

    Julio Herrera

    -----Mensaje original-----
    De: Mario Daniel Carugno
    Enviado el: jueves, 18 de diciembre de 2008 13:20
    Para: php-es@lists.php.net
    Asunto: [PHP-ES] identificar dominio del cliente

    Si hago una aplicacion web PHP que sera usada por varias 'empresas' y
    cada empresa tiene sus 'usuarios' que se autentifican en el sistema
    web,
    como podria hacer para saber de que 'empresa' viene la peticion ?
    Lo unico que se me ocurre es las distintas empresas accedan a la
    aplicacion desde un dominio propio, y que la aplicacion PHP pueda
    saber desde
    que dominio entran las peticiones para identificar la empresa.
    Se puede hacer eso con PHP ?
    Gracias

    --
    PHP Spanish Localization Talk Mailing List (http://www.php.net/)
    To unsubscribe, visit: http://www.php.net/unsub.php


    __________ Información de NOD32, revisión 3702 (20081218) __________

    Este mensaje ha sido analizado con NOD32 antivirus system
    http://www.nod32.com
  • Mario Daniel Carugno at Dec 18, 2008 at 5:01 pm

    2008/12/18 Julio Herrera - Chilered <jherrera@chilered.com>:
    Como en Internet es muy simple IMPERSONAR a alguien, lo unico que yo veo de
    forma simple es que en la definición del cliente tu pongas a que empresa
    corresponde, toncs cuando se logee el usuario sabras que corresponde a tal
    empresa ya que en su definición dice que viene de esa, si lo haces por
    dominio o ip lo mas probable que se pueda vulnerar.
    Por los consejos que me dieron, podria usar $_SESSION["REMOTE_HOST"] para
    saber el nombre de host de acceso.
    Vos decis que esto es facilmente vulnerable ? Que podria pasar, que alguien se
    haga pasar por el usuario de otra empresa ?

    Gracias

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedDec 18, '08 at 4:19p
activeDec 18, '08 at 9:01p
posts19
users6
websitephp.net

People

Translate

site design / logo © 2022 Grokbase