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

problemas con drag & drop(no js) en validación de páginas asp

Estas en el tema de problemas con drag & drop(no js) en validación de páginas asp en el foro de ASP Clásico en Foros del Web. Buenas... He descubierto que hay un grave error en mi página por culpa del drag&drop que se puede hacer de una página a otra... acá ...
  #1 (permalink)  
Antiguo 06/02/2006, 16:46
Avatar de sabandija25  
Fecha de Ingreso: abril-2004
Mensajes: 302
Antigüedad: 20 años, 1 mes
Puntos: 0
Exclamación problemas con drag & drop(no js) en validación de páginas asp

Buenas...

He descubierto que hay un grave error en mi página por culpa del drag&drop que se puede hacer de una página a otra... acá explico por si me pueden ayudar:

resulta que tengo una tabla de usuarios de distinto tipo que se les da acceso a ciertas cosas(pueden repetirse)...

el tema es que todas las páginas al principio las tengo validadas con sesiones en este estilo:
Código HTML:
if ISNULL(SESSION("RUT")) or len(SESSION("RUT")) < 1 then
	response.redirect ".\..\logout\logout.asp?salir=1"
end if
el problema es que en el historial quedan direcciones de páginas guardadas, que si se abren en una nueva página las tira para afuera, pero si hago un drag & drop desde una página del sistema guardada en el historial, al popup grande en donde tengo el sistema pasa por alto la validación ya que la sesión aún existe... y puede tener acceso a contenido no permitido... he tratado con js evitar el evento drag & drop pero se me hace que no se puede ya que no es dentro de la página sino por direcciones de página web... entonces me veo forzado a realizar algun "truco" en asp pero no se me ocurre nada... alguien me podría ayudar con alguna idea???

gracias!!
  #2 (permalink)  
Antiguo 06/02/2006, 16:56
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Interesante lo que dices, no lo he probado pero ...

no he entendido el problema.... si estas en tu sitio y arrastan algo del historial ... ¿aún sin registrarse pueden entrar a sitios donde la página del historial fue creada? ..... digo, la sesión no debe de existir, no se han registrado, pero bueno, si este es el caso ¿has probado con verificar de donde viene con una variable de servidor o grabar una cookie junto con la validación de las sesiones?

Lo más seguro es que no he entendido exactamente cual es el fallo.

Saludos
  #3 (permalink)  
Antiguo 06/02/2006, 17:06
Avatar de sabandija25  
Fecha de Ingreso: abril-2004
Mensajes: 302
Antigüedad: 20 años, 1 mes
Puntos: 0
re

Gracias por responder...
Éste problema es sólo con usuarios registrados...

Un ejemplo:
- Tengo el usuario A con permisos 1,2,3,4,5(Full acceso)
- Tengo el usuario B con permisos 1,3,5(Mediano acceso)

donde 1,2,3,4,5 son procesos(páginas) de uso para el usuario.

Supón que el usuario A ingresa al sistema con su rut = '1111111-4' y su password 'abcde', y navega por todas las 5 páginas. Después viene el usuario B que tiene menos permisos que el A, ingresa con su rut = '2222222-8' y password 'fghij', en ésta sesión la variable SESSION("RUT") = '2222222-8'.

Si abro otra ventana de explorer y veo el historial, hay páginas a las cuales no tendría acceso, por la validacion que puse en el primer post, pero teniendo la variable de sesión con un valor(2222222-8) al arrastrar desde ventana en ventana(drag & drop) la URL al popup(donde está el sistema) carga la página sin problemas porque encuentra ok la validación inicial... y como son usuarios del mismo tipo(misma tabla) puede realizar acciones sin que la página tenga errores...

me explique mejor o no??
gracias por responder
  #4 (permalink)  
Antiguo 06/02/2006, 17:54
Avatar de sabandija25  
Fecha de Ingreso: abril-2004
Mensajes: 302
Antigüedad: 20 años, 1 mes
Puntos: 0
re

Bueno, estuve buscando bastante rato alguna solución y me la dió javascript...

posteo la solución ya que creo que a mas de alguno que tenga el mismo tipo de validación ASP le va a servir...

sólo hay que colocar en el <body> de cada página esto:
<body onDragOver="return false;">

onDragOver lo que hace es que primero ve si donde es arrastrado el objeto, éste es válido para alojarlo(por ejemplo un textbox)... si no es válido(por ejemplo una zona blanca de la página web) no hace nada...

cualquier otro evento Drag no funciona ya que los arrastres están pensados para acciones dentro de la misma página. pero la URL de la barra de direcciones no forma parte de la página web por lo cual un arrastre de la URL puede provocar bastantes daños de seguridad para la gente registrada en un web. ahora bien, el evento onDragOver es mas especial debido a que toma en cuenta una cosa que no toman los otros... toma en cuenta el final de la acción de un Drag & Drop, o sea en donde queda lo seleccionado... es por eso que este evento también toma en cuenta lo que se arrastre fuera del explorer(direcciones en .txt o barra de direcciones). al no reconocer un objeto válido donde alojar la selección, simplemente no lo hace...

saludos y espero que les sirva

pd: creo que a pesar que es javascript el 99% de lo que hablo, el tema pertenece a ASP porque es una "ayuda" para la seguridad de un sitio ASP.

  #5 (permalink)  
Antiguo 06/02/2006, 20:00
Avatar de sabandija25  
Fecha de Ingreso: abril-2004
Mensajes: 302
Antigüedad: 20 años, 1 mes
Puntos: 0
re

pffffff no me van a creer.. cuando pensaba que todo estaba excelente se me ocurrió arrastrar la URL de otra ventana hacia la barra de título del popup(única área que no es de la página web) y resulta que igual carga la nueva página... ahora si que no se que hacer...

estoy muy quemado!
  #6 (permalink)  
Antiguo 07/02/2006, 09:37
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
yo tenia ese error pero lo resolvi de la siguiente forma

1. inicio sesión en el sitio
2. una vez validada la sesión (tengo un campo en mi base de datos que se llama SESSIONID en donde guardo el valor del SESSIONID del navegador que es único por cada sesión.
Cita:
Session("aut")=True
SessionID = Trim(Session.SessionID)

sQry = "UPDATE usuarios SET sessionID = '"&SessionID&"' where id_usuario = "&id_usuario
set rs = oConnhoteles.Execute(sQry)
3. redireccionamos a la otra pagina. Y listo
4. dentro de todas las paginas tengo un include que se llama “”funciones.asp”
5. y llamo una funcion (valga la redundancia que se llama ValidarUsuario, la cual contiene mas o menos lo siguiente
Código:
Sub ValidarUsuario
	if Session("aut")=False then
		Response.Redirect("default.asp?NumeroError=2")
	end if

‘obtengo el sessionID actual del navegador y comparo	
SessionID = Trim(Session.SessionID)
	id_usuario = request("id_usuario")
		if id_usuario = "" then
			Response.Redirect("default.asp?NumeroError=2")
		end if
	SQLsid="SELECT * FROM usuarios_web WHERE id_usuario = "&id_usuario&" and sessionID = '"&sessionID&"' "
	set rssid=oConnhoteles.Execute(SQLsid)
	if rssid.bof then
		Response.Redirect("default.asp?NumeroError=2")
	else
		'permito el acceso
	end if 
end Sub
Si el bookmarks es del usuario tipo “A” y arrastro el de tipo “B” a la hora de comparar Id_usuario y SessionID no seran los mismos y tendrá que sacarte del sitio

Me ha funcionado, he probado muchas cosas, y espero que te sirva.
__________________
JuanRa Pérez
San Salvador, El Salvador
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 00:05.