Aplicaciones Autenticación

20/09/2004 - 20:07 por Pao | Informe spam
Hola a todos:

He notado que hay muchas aplicaciones, donde las
estaciones clientes o los servidores por la aplicación
evidentmente realizan conexiones hacía bases de datos en
SQLServer (Autenticaciñon Mixta, pero no usan usuarios de
Windows solo de SQL) usando mecanismos como ADO, ODBC,
para la programación; donde se define un usuario y un
password de la base y ese tipo de información.

La aplicación que puede estar en el cliente o servidor
necesita leerlos a los datos de autenticación de alguna
parte, para ello utilizan archivos .ini, regedit, ODBC,
File DSN en las estaciones clientes o del servidor para
almacenar está información delicada, que en la mayoria de
los casos está expuesta como texto plano sin encriptación.
Por lo tanto el riesgo es sumamente alto.

Necesito alguna sugerencia de que implementar un esquema
seguro y tener un estandar para el desarrollo de las
futuras y actuales aplicaciones.

Se han estado creando programas de encriptación para de
alguna manera manterer esta información encriptadad, pero
como que no hay un estandar, unas utilizan un dll con un
algoritmo tal y otras otro..eso depende quien cree la
aplicación.

Agradecería me digan de una o varias alternativas que nos
ayuden a manejar estos casos de manera segura a fin de
poder también hacerlo un estándar para el desarrollo de
las aplicaciones. El front-End usado es Visual Basic,
ASP,Vbscript.


Muchas gracias por su ayuda.

Preguntas similare

Leer las respuestas

#6 Maxi
21/09/2004 - 14:29 | Informe spam
Hola, te comento:

Yo uso una sesion por usuario y como la seguridad de Sql es muy mala lo que
hago es aplicar al Store de generacion de nuevos logins el algotirmo Hash,
entonces en el motor queda encriptado, por lo cual no hay forma de entrar
:-)

Luego mi aplicacion lo que hace es nuevamente con el hash intentar conectar.
El tema de la red se soluciona aplicando cifrado de la misma en los
paquetes, revisa la herramienta de Servidor que viene en el SQL y veras que
se puede configurar desde ahi.


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Pao" escribió en el mensaje
news:36a801c49f6b$a12833a0$
Ok, pero porque en tu pantalla. usas el algoritomo Hash...
La clave que digita el usuario es la misma del login de
SQL???
Si le pones el algoritmo hash es para que nadie la obtenga
por la red???
Esas son mis dudas respecto a ese caso.

Muchas gracias

A ver, utilizar siempre la misma cuenta para mi es un


enorme agujero de
seguridad, porque le estas dando muchos permisos a tus


usuarios finales :(

Que pasaria si encontras a un usuario un poco picaron y


hace SqlInject? a la
lona con todo :(, ademas si siempre usas el mismo usuario


y se te ocurre
poder armar algun control de auditoria, no seria muy


bueno porque no sabrias
realmente quien esta haciendo la operacion, ni hablar a


la hora de
administrar tu SQL y que veas en la "Actividad Actual" un


centenar de tareas
todas con el mismo login, la verdad que es un lio total y


totalmente
inseguro.

Deberias de tener una sesion por usuario o sino usar la


autentificacion de
Windows :-)

Ahora, si no quieres usar pantalla de Bienvenida estas en


serios problemas,
porque guardar las claves es algo muy critico de verdad,


con lo cual estas
teniendo un enorme agujero de seguridad mas.






Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Pao" escribió en el mensaje
news:3fc001c49f4e$dd429410$
Podría empezarse a utilizar. Habrá que considerarlo.
Pero si no tienes forma de usarla y tampoco puedes
utilizar una pantalla en la cual te pida los datos...que
sugieres hacer???
Por otro lado porque es necesario no manejar la misma
clave aplicativa que la de base?? Por el hecho de que te
la pueden capturar por la red???
Explicame como hacer más segura una aplicación en ese
sentido, es correcto o no que yo use esto pero manejando
la misma clave de SQL que por el front-En en la ventana.


Hola, y porque no usar la seguridad integrada?

Si quieres usar la de SQL yo uso esto:

1. Las claves de los Logins las paso con el algotirmo


HASH (o md5 en su
defecto)
2. No guardo la clave en ningun ini ni nada por el


estilo, sino que armo la
pantalla de Bienvenida para que el usuario la introduzca,


luego le aplico

HASH y comparo con la de SQL

Ademas de esto, ninguno de mis usuarios tiene acceso a


nada, solo a ejecutar
SP, ademas que utilizo funciones de aplicacion, con lo


cual tengo el tema
bien controladito y si alguien saca una clave no puede


hacer nada de nada
:-)

Suerte



Salu2





-
-
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET





-
-
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Pao" escribió en el mensaje
news:250f01c49f3c$ab8041a0$
Hola a todos:

He notado que hay muchas aplicaciones, donde las
estaciones clientes o los servidores por la aplicación
evidentmente realizan conexiones hacía bases de datos en
SQLServer (Autenticaciñon Mixta, pero no usan usuarios de
Windows solo de SQL) usando mecanismos como ADO, ODBC,
para la programación; donde se define un usuario y un
password de la base y ese tipo de información.

La aplicación que puede estar en el cliente o servidor
necesita leerlos a los datos de autenticación de alguna
parte, para ello utilizan archivos .ini, regedit, ODBC,
File DSN en las estaciones clientes o del servidor para
almacenar está información delicada, que en la mayoria de
los casos está expuesta como texto plano sin




encriptación.
Por lo tanto el riesgo es sumamente alto.

Necesito alguna sugerencia de que implementar un esquema
seguro y tener un estandar para el desarrollo de las
futuras y actuales aplicaciones.

Se han estado creando programas de encriptación para de
alguna manera manterer esta información encriptadad, pero
como que no hay un estandar, unas utilizan un dll con un
algoritmo tal y otras otro..eso depende quien cree la
aplicación.

Agradecería me digan de una o varias alternativas que nos
ayuden a manejar estos casos de manera segura a fin de
poder también hacerlo un estándar para el desarrollo de
las aplicaciones. El front-End usado es Visual Basic,
ASP,Vbscript.


Muchas gracias por su ayuda.



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system




(http://www.grisoft.com).
Version: 6.0.764 / Virus Database: 511 - Release Date:


15/09/2004


.





.






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.764 / Virus Database: 511 - Release Date: 15/09/2004
Respuesta Responder a este mensaje
#7 Pao
21/09/2004 - 18:07 | Informe spam
Hola.
Disculpa que te moleste pero no entiendo bien.
Porque dices que la segurida SQL es mala, la clave no está
expuesta en la tabla syslogins:
name Passord
DISTSRV ⴶⴶⴶⴶⴶⴶⴶⴶ
FIRMSRV ⴶⴶⴶⴶⴶⴶⴶⴶ

Pero tu te refieres a que pueden facilmente descubir la
clave e ingresar, que se yo aplicando fuerza bruta???
Ahora en el sp_addlogin, tu lo cambiastes y en el momento
que tu creas el login x ejemplo:
sp_addlogin 'Pao','clave123'
el internamente ya no guarda la clave como clave123 sino
que le ha amodificado y él en la aplicación pone la
clave 'clave123', pero si quisera conectarse vía SQL no
podria o no le serviría 'clave123'

Cierto!!! Dime que sí te entendi.
Ahora porque no es bueno que un usuario tenga la misma
clave que ingresa en la aplicación en las herramientas de
desarrollo de SQLServer. (ISQLW, Enterprise,etc)

P.D: Podrias enviarme un ejemplo de como actualizastes el
sp.

Millón gracias.

Hola, te comento:

Yo uso una sesion por usuario y como la seguridad de Sql


es muy mala lo que
hago es aplicar al Store de generacion de nuevos logins


el algotirmo Hash,
entonces en el motor queda encriptado, por lo cual no hay


forma de entrar
:-)

Luego mi aplicacion lo que hace es nuevamente con el hash


intentar conectar.
El tema de la red se soluciona aplicando cifrado de la


misma en los
paquetes, revisa la herramienta de Servidor que viene en


el SQL y veras que
se puede configurar desde ahi.


Salu2
-


-
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
-


-
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Pao" escribió en el mensaje
news:36a801c49f6b$a12833a0$
Ok, pero porque en tu pantalla. usas el algoritomo Hash...
La clave que digita el usuario es la misma del login de
SQL???
Si le pones el algoritmo hash es para que nadie la obtenga
por la red???
Esas son mis dudas respecto a ese caso.

Muchas gracias

A ver, utilizar siempre la misma cuenta para mi es un


enorme agujero de
seguridad, porque le estas dando muchos permisos a tus


usuarios finales :(

Que pasaria si encontras a un usuario un poco picaron y


hace SqlInject? a la
lona con todo :(, ademas si siempre usas el mismo usuario


y se te ocurre
poder armar algun control de auditoria, no seria muy


bueno porque no sabrias
realmente quien esta haciendo la operacion, ni hablar a


la hora de
administrar tu SQL y que veas en la "Actividad Actual" un


centenar de tareas
todas con el mismo login, la verdad que es un lio total y


totalmente
inseguro.

Deberias de tener una sesion por usuario o sino usar la


autentificacion de
Windows :-)

Ahora, si no quieres usar pantalla de Bienvenida estas en


serios problemas,
porque guardar las claves es algo muy critico de verdad,


con lo cual estas
teniendo un enorme agujero de seguridad mas.






Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Pao" escribió en el mensaje
news:3fc001c49f4e$dd429410$
Podría empezarse a utilizar. Habrá que considerarlo.
Pero si no tienes forma de usarla y tampoco puedes
utilizar una pantalla en la cual te pida los datos...que
sugieres hacer???
Por otro lado porque es necesario no manejar la misma
clave aplicativa que la de base?? Por el hecho de que te
la pueden capturar por la red???
Explicame como hacer más segura una aplicación en ese
sentido, es correcto o no que yo use esto pero manejando
la misma clave de SQL que por el front-En en la ventana.


Hola, y porque no usar la seguridad integrada?

Si quieres usar la de SQL yo uso esto:

1. Las claves de los Logins las paso con el algotirmo


HASH (o md5 en su
defecto)
2. No guardo la clave en ningun ini ni nada por el


estilo, sino que armo la
pantalla de Bienvenida para que el usuario la






introduzca,
luego le aplico

HASH y comparo con la de SQL

Ademas de esto, ninguno de mis usuarios tiene acceso a


nada, solo a ejecutar
SP, ademas que utilizo funciones de aplicacion, con lo


cual tengo el tema
bien controladito y si alguien saca una clave no puede


hacer nada de nada
:-)

Suerte



Salu2






-
-
-
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET






-
-
-
Nunca consideres el estudio como una obligación sino






como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Pao" escribió en el mensaje
news:250f01c49f3c$ab8041a0$
Hola a todos:

He notado que hay muchas aplicaciones, donde las
estaciones clientes o los servidores por la aplicación
evidentmente realizan conexiones hacía bases de datos en
SQLServer (Autenticaciñon Mixta, pero no usan usuarios






de
Windows solo de SQL) usando mecanismos como ADO, ODBC,
para la programación; donde se define un usuario y un
password de la base y ese tipo de información.

La aplicación que puede estar en el cliente o servidor
necesita leerlos a los datos de autenticación de alguna
parte, para ello utilizan archivos .ini, regedit, ODBC,
File DSN en las estaciones clientes o del servidor para
almacenar está información delicada, que en la mayoria






de
los casos está expuesta como texto plano sin




encriptación.
Por lo tanto el riesgo es sumamente alto.

Necesito alguna sugerencia de que implementar un esquema
seguro y tener un estandar para el desarrollo de las
futuras y actuales aplicaciones.

Se han estado creando programas de encriptación para de
alguna manera manterer esta información encriptadad,






pero
como que no hay un estandar, unas utilizan un dll con un
algoritmo tal y otras otro..eso depende quien cree la
aplicación.

Agradecería me digan de una o varias alternativas que






nos
ayuden a manejar estos casos de manera segura a fin de
poder también hacerlo un estándar para el desarrollo de
las aplicaciones. El front-End usado es Visual Basic,
ASP,Vbscript.


Muchas gracias por su ayuda.



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system




(http://www.grisoft.com).
Version: 6.0.764 / Virus Database: 511 - Release Date:


15/09/2004


.





.






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.764 / Virus Database: 511 - Release Date:


15/09/2004


.

Respuesta Responder a este mensaje
#8 Maxi
21/09/2004 - 20:30 | Informe spam
Bien, es tal cual lo dijiste :-), lo unico que no modifique ningun SP sino
que arme uno nuevo y es el que uso en la aplicacion.

La cosa es asi

Mi aplicacion genera los usuarios por la misma aplicacion y no por el SQL,
para póder hacer esto uso un SP que se le pasa como parametro el usuario y
la clave, esto agrega el login y pone en una tabla del sistema (mio) que se
ha generado un usuario, esa tabla luego la uso para los permisos dentro de
la aplicacion.

En el parametro de Clave, la envio encriptada con Md5, entonces el usuario
al dar el alta pone:

User:pepe
Pass: pepe

la capa de acceso a datos pasa:

User:pepe
Pass:xasdf (por ej)

y asi lo meto, luego cuando la pantalla de login hace lo mismo no, y valido.

Podrias tambien no usar Md5 y poner dentro del mismo SP algun algoritmo tuyo
para encriptar clave.

Con esto que pasa, el usuario si se quiere conectar desde un Excel por ej,
le dara error porque el pondra pepe como clave y no es valido eso.

Ojo, te vuelvo a repetir, lo mejor es la seguridad Windows porque te olvidas
de estas cosas, pero hay escenarios donde no se puede y hay que recurrir a
la de sql ;-)




Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Pao" escribió en el mensaje
news:3efa01c49ff5$24264bf0$
Hola.
Disculpa que te moleste pero no entiendo bien.
Porque dices que la segurida SQL es mala, la clave no está
expuesta en la tabla syslogins:
name Passord
DISTSRV
ⴶⴶⴶⴶⴶⴶⴶⴶ
FIRMSRV
ⴶⴶⴶⴶⴶⴶⴶⴶ

Pero tu te refieres a que pueden facilmente descubir la
clave e ingresar, que se yo aplicando fuerza bruta???
Ahora en el sp_addlogin, tu lo cambiastes y en el momento
que tu creas el login x ejemplo:
sp_addlogin 'Pao','clave123'
el internamente ya no guarda la clave como clave123 sino
que le ha amodificado y él en la aplicación pone la
clave 'clave123', pero si quisera conectarse vía SQL no
podria o no le serviría 'clave123'

Cierto!!! Dime que sí te entendi.
Ahora porque no es bueno que un usuario tenga la misma
clave que ingresa en la aplicación en las herramientas de
desarrollo de SQLServer. (ISQLW, Enterprise,etc)

P.D: Podrias enviarme un ejemplo de como actualizastes el
sp.

Millón gracias.

Hola, te comento:

Yo uso una sesion por usuario y como la seguridad de Sql


es muy mala lo que
hago es aplicar al Store de generacion de nuevos logins


el algotirmo Hash,
entonces en el motor queda encriptado, por lo cual no hay


forma de entrar
:-)

Luego mi aplicacion lo que hace es nuevamente con el hash


intentar conectar.
El tema de la red se soluciona aplicando cifrado de la


misma en los
paquetes, revisa la herramienta de Servidor que viene en


el SQL y veras que
se puede configurar desde ahi.


Salu2
-


-
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
-


-
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Pao" escribió en el mensaje
news:36a801c49f6b$a12833a0$
Ok, pero porque en tu pantalla. usas el algoritomo Hash...
La clave que digita el usuario es la misma del login de
SQL???
Si le pones el algoritmo hash es para que nadie la obtenga
por la red???
Esas son mis dudas respecto a ese caso.

Muchas gracias

A ver, utilizar siempre la misma cuenta para mi es un


enorme agujero de
seguridad, porque le estas dando muchos permisos a tus


usuarios finales :(

Que pasaria si encontras a un usuario un poco picaron y


hace SqlInject? a la
lona con todo :(, ademas si siempre usas el mismo usuario


y se te ocurre
poder armar algun control de auditoria, no seria muy


bueno porque no sabrias
realmente quien esta haciendo la operacion, ni hablar a


la hora de
administrar tu SQL y que veas en la "Actividad Actual" un


centenar de tareas
todas con el mismo login, la verdad que es un lio total y


totalmente
inseguro.

Deberias de tener una sesion por usuario o sino usar la


autentificacion de
Windows :-)

Ahora, si no quieres usar pantalla de Bienvenida estas en


serios problemas,
porque guardar las claves es algo muy critico de verdad,


con lo cual estas
teniendo un enorme agujero de seguridad mas.






Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Pao" escribió en el mensaje
news:3fc001c49f4e$dd429410$
Podría empezarse a utilizar. Habrá que considerarlo.
Pero si no tienes forma de usarla y tampoco puedes
utilizar una pantalla en la cual te pida los datos...que
sugieres hacer???
Por otro lado porque es necesario no manejar la misma
clave aplicativa que la de base?? Por el hecho de que te
la pueden capturar por la red???
Explicame como hacer más segura una aplicación en ese
sentido, es correcto o no que yo use esto pero manejando
la misma clave de SQL que por el front-En en la ventana.


Hola, y porque no usar la seguridad integrada?

Si quieres usar la de SQL yo uso esto:

1. Las claves de los Logins las paso con el algotirmo


HASH (o md5 en su
defecto)
2. No guardo la clave en ningun ini ni nada por el


estilo, sino que armo la
pantalla de Bienvenida para que el usuario la






introduzca,
luego le aplico

HASH y comparo con la de SQL

Ademas de esto, ninguno de mis usuarios tiene acceso a


nada, solo a ejecutar
SP, ademas que utilizo funciones de aplicacion, con lo


cual tengo el tema
bien controladito y si alguien saca una clave no puede


hacer nada de nada
:-)

Suerte



Salu2






-
-
-
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET






-
-
-
Nunca consideres el estudio como una obligación sino






como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Pao" escribió en el mensaje
news:250f01c49f3c$ab8041a0$
Hola a todos:

He notado que hay muchas aplicaciones, donde las
estaciones clientes o los servidores por la aplicación
evidentmente realizan conexiones hacía bases de datos en
SQLServer (Autenticaciñon Mixta, pero no usan usuarios






de
Windows solo de SQL) usando mecanismos como ADO, ODBC,
para la programación; donde se define un usuario y un
password de la base y ese tipo de información.

La aplicación que puede estar en el cliente o servidor
necesita leerlos a los datos de autenticación de alguna
parte, para ello utilizan archivos .ini, regedit, ODBC,
File DSN en las estaciones clientes o del servidor para
almacenar está información delicada, que en la mayoria






de
los casos está expuesta como texto plano sin




encriptación.
Por lo tanto el riesgo es sumamente alto.

Necesito alguna sugerencia de que implementar un esquema
seguro y tener un estandar para el desarrollo de las
futuras y actuales aplicaciones.

Se han estado creando programas de encriptación para de
alguna manera manterer esta información encriptadad,






pero
como que no hay un estandar, unas utilizan un dll con un
algoritmo tal y otras otro..eso depende quien cree la
aplicación.

Agradecería me digan de una o varias alternativas que






nos
ayuden a manejar estos casos de manera segura a fin de
poder también hacerlo un estándar para el desarrollo de
las aplicaciones. El front-End usado es Visual Basic,
ASP,Vbscript.


Muchas gracias por su ayuda.



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system




(http://www.grisoft.com).
Version: 6.0.764 / Virus Database: 511 - Release Date:


15/09/2004


.





.






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.764 / Virus Database: 511 - Release Date:


15/09/2004


.






Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.764 / Virus Database: 511 - Release Date: 15/09/2004
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida