Foros del Web » Programando para Internet » ASP Clásico »

malgasto de recursos del servidor

Estas en el tema de malgasto de recursos del servidor en el foro de ASP Clásico en Foros del Web. Hola, mi pregunta es sencilla, tengo cerca de 15 funciones para validar los respectivos campos de un formulario, cada una con sus respectivas características que ...
  #1 (permalink)  
Antiguo 12/04/2005, 19:05
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 10 meses
Puntos: 9
malgasto de recursos del servidor

Hola, mi pregunta es sencilla, tengo cerca de 15 funciones para validar los respectivos campos de un formulario, cada una con sus respectivas características que se adecuan al tipo de campo de formulario que se trata, es decir, si es que pide el telefono, el mail, la direccion, etc. Pero en las 15 funciones hay una característica que es compartida y es que recorren un array(25) que contiene los simbolos no permitidos y con la función InStr chequeo si el usuario ha introducido alguno de estos simbolos. Ahora se viene la pregunta: ¿no absorbe muchos recursos del servidor lo que hice?. Pregunto esto porque todavia no la he colgado en internet y me gustaría saber si tengo que cambiar mi código por algo más sencillo o si mantengo las lineas actuales. Agradecería mucho que me den su punto de vista y si conocen alguna forma más sencilla de como hacerlo. Muchas gracias.
  #2 (permalink)  
Antiguo 12/04/2005, 19:12
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 1 mes
Puntos: 98
Bueno, finalmente tiene que haber una forma en la que valides, en este caso tu utilizaste un array con los caracteres no deseados, finalmente si, son muchas iteraciones, pero habría que saber que hacen exactamente las funciones integradas de algún lenguaje para poder decir que hiciste bien o mal, a mi por lo pronto, si no son datos super importantes, me gusta validar en el cliente, además me parece que javascript se presta mucho mas para hacer esto..pero bueno, regresando a tu cuestionamiento, aunque la curva de aprendizaje es más pronunciada, yo te recomendaría que si tienes tiempo y disposición investigues sobre las expresiones regulares, creo que eso te ayudaría muchísimo para hacer algo muy poderoso optimizando el consumo de recursos.

No se si esto contesta a tu pregunta

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 12/04/2005, 19:17
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 5 meses
Puntos: 18
Tienes scripts de javascript para validación a millones por ahí. Efectivamente master U_G, las validaciones en el cliente mucho mejor.
  #4 (permalink)  
Antiguo 12/04/2005, 20:16
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 10 meses
Puntos: 9
Si hago la validación por javascript, no es más fácil que el usuario pueda engañar esa validación y pasarla sin mayores problemas insertando cualquier tipo de caracter que se le plazca?, realmente pregunto esto desde mi ignorancia, como ya lo habrán notado. Y otra cosa, a que le llamas U_Goldman datos importantes, porque mira son formularios en donde voy a guardar el telefono, pais, direccion, barrio, etc, y mas datos personales de muchas personas, consideras esos datos importantes como para hacer una validación en el servidor? o en tu caso preferirias hacerlo en Javascript?.
Y también me gustaría preguntarles, pese a que en realidad tendría que iniciar un nuevo tema para esto, que otras consideraciones con respecto al tema de seguridad debo tomar en un sitio de comercio electronico, ya estoy evitando el SQL injection, me podrían decir que otras cosas tendría que contemplar?, como siempre, millón de gracias a los dos por responderme siempre mis mensajes.
  #5 (permalink)  
Antiguo 12/04/2005, 20:42
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 10 meses
Puntos: 2
Hola!

Las validaciones de JavaScript son solo una herramienta para ahorrarle tiempo al cliente, y al servidor evitar que ejecute una pagina que al final de cuenta te marcara el erro...

Es decir, javascript representa menos carga de trabajo para el servidor y menos tiempo de espera para el usuario.

No puedes confiar en JavaScript para que se encargue de la seguridad de tus paginas, porque:

1. Si el JavaScriopt presenta un error, el usuario pone "No aceptar el error" y la pagina sigue a la siguiente, porque la funcion de validar no funciono correctamente.

2. Cualquiera puede crear una pagina espejo donde le pasa los valores de tu formulario directo a tu ASP sin pasar por la validacion.

3. Siempre quieres asegurar en tu ASP que estas manejando datos correctos.

Entonces, siempre debes validar primero en tu ASP, y luego validar en JavaScript como un favor a tu usuario y a tu server.

Mira, no tengo a la mano la funciones que utilizo, ahorita no tengo acceso pero te las puedo pasar, aqui las pondre para asegurarme de que todo esta bien...

Pero las validaciones generales serian asi:

var = Resquest.X("Var")

1. Asegurar que no esta vacia:

if ( (NOT isEmpty(Var))
AND (NOT isNULL(Varr)) AND (len(trim(Var)) > 0) ) then
Vacia = True

2. Asegurarte que sea del tipo correcto, por ejemplo, si quieres un entero, entonces le dices:
var = Cint(var)

3. Aplicas Trim(Var) y LTrim(Var)

4. Los caracteres que quieres remover especificamente como tu lo mencionasa, y bien, cuando haces un WHILE o FOR para que sea lo mas eficiente posible haces esto:

limit = Ubound(arr)

for i = 0 to limit

Nunca haces esto

for i = 0 to Ubound(arr)

Cuando un whiel, for, etc. tiene un valor ESTATICO desde el principio su eficiencia crece mucho, ademas, si en el valor de finalizar tienes una funcion, esa funcion se ejecutara en cada ITERACION, entonces estas haciendo limit veces la funcion ubound.

Lo mismo pasa con Len(str), etc, cualquier funcion.

Bueno, ese es mi comentario.

PREGUNTA: A que le llaman SQL Inyection, no estoy familiarizado con ese termino
  #6 (permalink)  
Antiguo 12/04/2005, 21:17
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 10 meses
Puntos: 9
Hola Neuron, muchas gracais por haberte tomado el tiempo para escribir tantas lineas en tu mensaje. No entendi bien una cosa, dices que hay que validar primero en ASP y luego en JavaScript, no sería suficiente con la validación en ASP?, y te comento que SQL Injection se llama cuando te ingresan sentencias para manipular tus bases de datos a través de los formularios.
Gracais de nuevo Neuron por tu comentario.
  #7 (permalink)  
Antiguo 12/04/2005, 21:27
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 10 meses
Puntos: 2
Si

Con la validacion en ASP es necesario, y tal vez te confundi... quice decir... primero te aseguras de que tu ASP que recibe los datos esta totalmente bien validado, y luego trabajas sobre el javascript que valida la forma que envias porque es un extra que si ahorra tiempo de ejecucion a tu server y tambien al usuario que no tendra que esperar a qu un ASP se ejecute para ver el error.

Pero si, con la validacion de ASP es suficiente...


Y el SQL inyection... Dios nos libre , jajajajajaja, a quien se le ocurrio tal barbaridad... bueno, eso no se hace... muy mal, muy mal...

Y que bueno que lo estes evitando....

Bueno, nos vemos despues.
  #8 (permalink)  
Antiguo 13/04/2005, 06:50
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 10 meses
Puntos: 9
Neuron, si quieres te paso a tu mail un paper en PDF que trasgukabi lo posteo cuando cumplio 400 mensajes. Ayer, buscando en el foro, di con el y sinceramente es espectacular y realmente instructivo lo que se comenta ahí. Aprovecho también para agradecerle a Trasgukabi por compartirlo.
Cuando quieras, no tienes más que avisarme así te lo envío al mail, debido a que no puedo adjuntar archivos en el foro.
Saludos.
  #9 (permalink)  
Antiguo 13/04/2005, 07:01
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 20 años, 5 meses
Puntos: 18
este mismo:
SQLInjection.pdf
  #10 (permalink)  
Antiguo 13/04/2005, 10:13
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 10 meses
Puntos: 2
Gracias

Esta muy bueno el documento!!!, ahora ya entendi a que se refieren con SQL Injection, y si, todos tenemos la posibilidad de caer en eso, pero por eso existen las validaciones de campos, y mas para los tipo cadena como mariano_donati tenia la duda de las validaciones.

Todo debe validarse en el ASP y estar seguros, si sabes esto del SQL Injection, entonces tendras que hacer algo para prevenir la comilla, etc.

Y mas aun, yo no he tenido problemas de este tipo, porque al momento de crear una cadena SQL lo paso por una validacion especial que ya respeta cosas como comillas, saltos de linea, tabs, etc.

Y bueno, hay muchas otras reglas de seguridad, que si bien te atacan haciendo un SELECT especial, o intentan un UPDATE, DELETE, etc, todo esto se maneja desde el USER y PASSWORD que usas en el database, en el cual si sabes que es un usuario normal o si vas a caer en este caso, entonces creas la conexion a la base de datos con un usuario tipo guest el cual no tiene derechos de escritura sobre la tabla a la cual quieres consultar.

Bueno, gracias por el Doc. siempre es bueno enterarse de todas estas cosas.

Gracias.
  #11 (permalink)  
Antiguo 13/04/2005, 10:40
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 1 mes
Puntos: 98
Utilizar consultas por medio de parámetros también es una buena forma para evitar el SQL injection, y otra para olvidarse de si lleva comilla simple o no, claro que también tienes que escribir mas líneas de código.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #12 (permalink)  
Antiguo 13/04/2005, 12:53
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 10 meses
Puntos: 2
Hola!

No entendi esta parte....

"Utilizar consultas por medio de parámetros también es una buena forma para evitar el SQL injection..."

Podrias explicar a que te refieres con mandar consultas por parametros?

PREGNUTA: Como le hacen para poner esos cuadros azules con codigo, citas de otros usuarios etc.. no se como hacerlo

Última edición por Neuron_376; 13/04/2005 a las 13:12
  #13 (permalink)  
Antiguo 13/04/2005, 13:12
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 1 mes
Puntos: 98
Una consulta parametrizada?

strSQL = "SELECT campo FROM tabla WHERE campo_cualquier_tipo = ? "

Set rs = Server.CreateObject("ADODB.Recordset")
Set ObjConn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")
ObjConn.Open "loquesea"

Set param = cmd.CreateParameter("un_nombre", adVarChar, adParamInput, 50, variableASP)
cmd.Parameters.Append(param)

cmd.ActiveConnection = ObjConn
cmd.CommandText = strSQL
cmd.CommandType = adCmdText
rs.CursorType = 3
rs.Open cmd

Cuando creas el parámetro le deberás pasar el tipo de dato, el tipo de parámetro, el tamaño del campo y el valor...

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #14 (permalink)  
Antiguo 13/04/2005, 13:20
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 10 meses
Puntos: 2
Ok.

Si tienes razon, ese tipo de consultas, gracias... comunmente ese tipo de consultas son usadas solamente para accesar a StoreProcedures que tienen variables tipo OUTPUT, asi puedes recojer su valor, porque con el tipo de consultas normales no puedes lograrlo... y bueno, esto para justamente por las desventajas de este tipo de consultas que son, eso exactamente que tu mencionas, codigo mas complicado y mas uso de recursos porque es una conexion que usa un objeto especial.
  #15 (permalink)  
Antiguo 13/04/2005, 13:31
Avatar de pablinweb  
Fecha de Ingreso: julio-2003
Mensajes: 283
Antigüedad: 21 años, 6 meses
Puntos: 0
Cita:
Iniciado por Neuron_376
PREGNUTA: Como le hacen para poner esos cuadros azules con codigo, citas de otros usuarios etc.. no se como hacerlo
Para citar un post solo de das al boton citar que se encuentra abajo a la derecha y te abre para responder al tema.
Para poner código lo tienes que encerrar en las etiquetas [_CODE] [_/CODE] sin el _
  #16 (permalink)  
Antiguo 13/04/2005, 13:31
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años
Puntos: 535
Cita:
Iniciado por Neuron_376
PREGNUTA: Como le hacen para poner esos cuadros azules con codigo, citas de otros usuarios etc.. no se como hacerlo
Seguro respondés en la opción de respuesta rápida. Hacé click sobre "ir a vista avanzada" o sobre el botón responder y tenés un área de texto más grande para escribir que arriba posée una barra de herramientas. Jugá un rato con ella para ver los resultados (no hace falta que envíes el mensaje, tenés una opción de vista previa que te muestra como sería el resultado final). Para citar un mensaje completo (y que coloque el nombre de usuario a quién citaste), usás la opción llamada "citar" en el mensaje que querés citar.

Saludos
__________________
...___...
  #17 (permalink)  
Antiguo 13/04/2005, 13:33
Avatar de pablinweb  
Fecha de Ingreso: julio-2003
Mensajes: 283
Antigüedad: 21 años, 6 meses
Puntos: 0
Perdón Al Zuwaga solo trasmitía lo aprendido de usted
  #18 (permalink)  
Antiguo 13/04/2005, 13:46
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años
Puntos: 535
Mandamos el mensaje al mismo tiempo ;)
__________________
...___...
  #19 (permalink)  
Antiguo 13/04/2005, 13:54
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 10 meses
Puntos: 2
Probando CITAR -- jejeje

Cita:
Iniciado por Al Zuwaga
Mandamos el mensaje al mismo tiempo ;)
Que bueno que respondieron

Gracias... funciono
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 03:23.