Servicios web - Seguridad y rendimiento

01/02/2006 - 11:27 por Santiago Barro | Informe spam
Hola a todos,
tenemos una base de datos Sql Server en Internet.
El enlace con esta base de datos se realiza sólamente a través de un
servicio web que es el encargado de insertar, modificar o eliminar registros
y de devolver resultados a través de datasets, todo a través de
procedimientos almacenados.

Desde una pequeña aplicación se accede directamente a ese servicio web.
Como medidas de seguridad, introducimos las credenciales en la clase del
servicio web de esta manera:

'
'Credenciales de seguridad
'
Public Class CredencialesSOAP
Inherits SoapHeader
Public Login As String
Public Password As String
End Class

#Region " Seguridad "
Public Credenciales As CredencialesSOAP
'--
' Devuelve TRUE si se permite la conexion con el servicio
'--
Private Function PermitirConexion() As Boolean
If Credenciales.Login = Login And Credenciales.Password = Password
Then
Return True
Else
Return False
End If
End Function
#End Region


==Y en todos los procedimientos insertamos el siguiente codigo:
==<WebMethod(), SoapHeader("Credenciales")> _
Public Function TraerUsuario(usu as long) As DataSet
'Seguridad
If PermitirConexion() = False Then
Throw New Exception("No dispone de permisos para conectar con el
servicio")
Exit Function
End If
...


==Desde la aplicación llamamos a los procedimientos de esta manera:
==Dim Serv As New WebService.Service
Dim cred As New WebService.CredencialesSOAP
cred.Login = login
cred.Password = password
Serv.CredencialesSOAPValue = cred
dim dset as dataset=Serv.TraerUsuario(1)
...


Mi pregunta es si creeis que es un buen nivel de seguridad o se debería
mejorar de alguna manera.
Y, ¿como responden los servicios web a nivel de rendimiento?. Hemos hecho
pruebas de 3 - 4 conexiones simultáneas y todo a funcionado bien pero si
hubiera bastantes conexiones simultáneas (40 - 50) ¿podriamos tener
problemas?


Muchas gracias y un saludo
Santiago Barro

Preguntas similare

Leer las respuestas

#1 bialguos
01/02/2006 - 11:40 | Informe spam
No soy un gran experto, pero en temas de seguridad miraria las
especificaciones WSE implementandolas, sobre el rendimiento si estas
desarrollando en 1.1 o incluso en 2.0 pasar Datasets como parametro de
los servicios Web no es la mejor opción porque la información que
transmite es exagerada, por supuesto es la mas facil de implementar y
automatica y tendras que valorar en facilidad de desarrollo (lo cual
nos lleva atimepo y dinero) y rendimiento. Yo creo que la mejor opción
es realizar clases propias para el rendimiento aunque no es necesario
hacer esto para todos los datasets deberias de estudiar aquellos que
sean los mas frecuenemente utilizados, tamaño, complejidad... en mi
opinionel tema que planteas no es una tonteria y la gente de Microsoft
deberia de dejar claro en algun sitio este tipo de información y
arquitectura
Respuesta Responder a este mensaje
#2 Tiago Barro
01/02/2006 - 15:40 | Informe spam
Ok. Gracias por tu consejo. Miraré lo de las especificaciones WSE.
Seguramente dejaremos lo del envio de información mediante datasets ya que
en ningún caso se devuelve una gran cantidad de datos.

Por cierto, ¿conoces algún programa para realizar pruebas de rendimiento en
servicios web?. Creo haber oído que existen programas que simulan una gran
cantidad de peticiones a páginas web informando después del resultado, pero
no sé si existe lo mismo en servicios web.

Gracias y un saludo
Santiago Barro



"bialguos" escribió en el mensaje
news:
No soy un gran experto, pero en temas de seguridad miraria las
especificaciones WSE implementandolas, sobre el rendimiento si estas
desarrollando en 1.1 o incluso en 2.0 pasar Datasets como parametro de
los servicios Web no es la mejor opción porque la información que
transmite es exagerada, por supuesto es la mas facil de implementar y
automatica y tendras que valorar en facilidad de desarrollo (lo cual
nos lleva atimepo y dinero) y rendimiento. Yo creo que la mejor opción
es realizar clases propias para el rendimiento aunque no es necesario
hacer esto para todos los datasets deberias de estudiar aquellos que
sean los mas frecuenemente utilizados, tamaño, complejidad... en mi
opinionel tema que planteas no es una tonteria y la gente de Microsoft
deberia de dejar claro en algun sitio este tipo de información y
arquitectura
Respuesta Responder a este mensaje
#3 Jesús López
05/02/2006 - 09:26 | Informe spam
El problema de usar encabezados soap para la autentificación es que van en
claro, cualquier sniffer puede capturar los nombres de usuario y
contraseñas. Para mejorar el nivel de seguridad, o bien, usas HTTPS o Web
Services Security de las Web Services Extensions.

Saludos:

Jesús López
MVP


"Santiago Barro" escribió en el mensaje
news:
Hola a todos,
tenemos una base de datos Sql Server en Internet.
El enlace con esta base de datos se realiza sólamente a través de un
servicio web que es el encargado de insertar, modificar o eliminar
registros y de devolver resultados a través de datasets, todo a través de
procedimientos almacenados.

Desde una pequeña aplicación se accede directamente a ese servicio web.
Como medidas de seguridad, introducimos las credenciales en la clase del
servicio web de esta manera:

'
'Credenciales de seguridad
'
Public Class CredencialesSOAP
Inherits SoapHeader
Public Login As String
Public Password As String
End Class

#Region " Seguridad "
Public Credenciales As CredencialesSOAP

'--
' Devuelve TRUE si se permite la conexion con el servicio

'--
Private Function PermitirConexion() As Boolean
If Credenciales.Login = Login And Credenciales.Password = Password
Then
Return True
Else
Return False
End If
End Function
#End Region


==> Y en todos los procedimientos insertamos el siguiente codigo:
==> <WebMethod(), SoapHeader("Credenciales")> _
Public Function TraerUsuario(usu as long) As DataSet
'Seguridad
If PermitirConexion() = False Then
Throw New Exception("No dispone de permisos para conectar con
el servicio")
Exit Function
End If
...


==> Desde la aplicación llamamos a los procedimientos de esta manera:
==> Dim Serv As New WebService.Service
Dim cred As New WebService.CredencialesSOAP
cred.Login = login
cred.Password = password
Serv.CredencialesSOAPValue = cred
dim dset as dataset=Serv.TraerUsuario(1)
...


Mi pregunta es si creeis que es un buen nivel de seguridad o se debería
mejorar de alguna manera.
Y, ¿como responden los servicios web a nivel de rendimiento?. Hemos hecho
pruebas de 3 - 4 conexiones simultáneas y todo a funcionado bien pero si
hubiera bastantes conexiones simultáneas (40 - 50) ¿podriamos tener
problemas?


Muchas gracias y un saludo
Santiago Barro


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida