Evitar acceso no autorizado |
Responder | Página 12> |
Autor | ||
WarriorGeardark
Nuevo Unido: 29/Abril/2020 Localización: Mexico Estado: Sin conexión Puntos: 32 |
Tema: Evitar acceso no autorizado Enviado: 29/Abril/2020 a las 05:59 |
|
Hola amigos soy nuevo en el foro, y apenas estoy aprendiendo ACCESS, tengo una duda estoy haciendo un proyecto con un login, y utilizo código VBA, si ingreso un usuario y su contraseña funciona bien y también si no coincide no permitir ingresa el problema es,que hay un método para ingresar y se utilizan los caracteres especiales "'" de coma simple, como podría bloquear dichos caracteres, que solo me permite caracteres Alfanuméricos, A-Z y del 0-9, y también que se bloque el copiar y pegar en textbox por si se quieren pasar de listos y copiar los caracteres especiales,
He leído que se hace uso del evento KeyPress que utiliza los códigos ascii pero no se como podríaaplicarlo, espero puedan ayudarme o aconsejarme que otro método utilizar para darle más seguridad a mi proyecto.
|
||
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 29/Abril/2020 a las 11:09 | |
Hola
A ver que no me aclaro, quieres decir que si pones comilla simple te deja acceder, se salta la seguridad?? Si es asi entiendo que puede haber un fallo de diseño y lo correcto seria rediseñarlo. |
||
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 29/Abril/2020 a las 12:51 | |
Para esa parte existe una máscara de entrada predefinida llamada "Contraseña", puedes ponerla tanto en el campo de la tabla como en los controles textbox. Eso hará que sólo se muestren "*" e impedirá que se pueda hacer corta-pega
|
||
El saber no ocupa lugar, sólo tiempo
|
||
emiliove
Administrador Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5694 |
Enviado: 29/Abril/2020 a las 15:02 | |
Para entender lo que pasa deberías dar detalles de tu proyecto: hablar de como haces el login, y que código VBA usas. Saludos.
|
||
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 29/Abril/2020 a las 15:22 | |
Hola!
Este código te hace lo que necesitas.
Editado por mounir - 29/Abril/2020 a las 15:24 |
||
Un Saludo.
|
||
WarriorGeardark
Nuevo Unido: 29/Abril/2020 Localización: Mexico Estado: Sin conexión Puntos: 32 |
Enviado: 30/Abril/2020 a las 07:11 | |
Gracias por responder, no me explique el login funciona como debería si pongo una comilla simple no se salta la seguridad más bien con las comillas simple se hace lo que llaman inyección sql, donde es que vulneran la seguridad en lo otros si esta seguro.
|
||
WarriorGeardark
Nuevo Unido: 29/Abril/2020 Localización: Mexico Estado: Sin conexión Puntos: 32 |
Enviado: 30/Abril/2020 a las 07:13 | |
Gracias por responder el campo de mi tabla tiene la mascara de entrada como contraseña al igual que el textbox del formulario todo se mira así ***** pero si se puede copiar de una pagina el código y lo puedo en el textbox.
|
||
WarriorGeardark
Nuevo Unido: 29/Abril/2020 Localización: Mexico Estado: Sin conexión Puntos: 32 |
Enviado: 30/Abril/2020 a las 07:17 | |
Muchas gracias por responder, por supuesto este el codigo de mi formulario login Tengo dos funciones que evitan que pueda usar el ByPass y donde me desactiva la cinta de opciones y tengo permisos para el usuario administrador y los que no lo son.
Editado por WarriorGeardark - 30/Abril/2020 a las 07:22 |
||
WarriorGeardark
Nuevo Unido: 29/Abril/2020 Localización: Mexico Estado: Sin conexión Puntos: 32 |
Enviado: 30/Abril/2020 a las 07:21 | |
muchas gracias amigo eres un crack, con eso ya no me deja ingresar los caracteres especiales, y como podría evitar que copien y peguen en el textbox porque me fui a una pagina y copie el codigo con los caracteres especiales y si me deja pegarlo en el textbox.
|
||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14734 |
Enviado: 30/Abril/2020 a las 09:23 | |
Hola,
Varias cosas 1. En tu código hay unas cuantas ineficiencias - Evalúas el nulo (IsNull) pero no el vacío ni espacios en blanco. Yo utilizaría combinación de Trim y Nz - Muchos DLookup. Para un usuario y password correctos, cuento hasta 5 DLookup para recuperar información. Eso es el equivalente a 5 consultas. Es mucho mas económico de recursos utilizar un recordset filtrado dónde valides los campos. - Algunos If son obviables . TeclaShift "AllowBypassKey", dbBoolean, OnOfShift (incluso la variable es obviable si utilizas un recordset) - La validación de UserLevel no la pillo. Juraría que hace exactamente lo mismo. 2. Creo que no podrás impedir el Copy-Paste. Lo que si puedes es validar, en el BeforeUpdate del campo (que permite cancelar el evento), si hay caracteres prohibidos. Se trataría de tener una función que recorra, carácter a carácter, el texto y compruebe si el valor está permitido. Algo así: For i = 1 To Len(Me!CuadroTexto) Select Case Asc(Mid(Me!CuadroTexto, i,1)) Case 48 To 57, 65 To 90, 97 To 122 ' Caracteres permitidos. Mayúsculas, minúsculas y números Case Else ' Carácter NO permitido MsgBox "Texto contiene caracteres inválidos", vbCritical, "Aviso" Cancel = True Exit Sub End Select Next Escrito al vuelo Un saludo
|
||
01loko
Colaborador Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
Enviado: 30/Abril/2020 a las 09:58 | |
como pregunta: si se prohibe los codigos de control: del 17 al 20, ¿impide el ctrl+v? y si es asi, el raton cuando das pegar ¿no manda ese codigo? |
||
Recordar de que soy nuevo y estoy aprendiendo.
|
||
lbauluz
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 29/Marzo/2005 Localización: La Gloria Estado: Sin conexión Puntos: 3857 |
Enviado: 30/Abril/2020 a las 15:35 | |
Hola 01loko:
Los ascii 17 al 20 no tienen nada que ver con las teclas CTRL o similar, es decir, que el ctrl v lo vas a poder hacer y NO los puedes controlar por ASCII Para controlarlo, debes mirar las propiedades del campo poniéndolo como password O hacerte una función similar a esta: Private Sub NombreDeTuCampo_KeyDown(KeyCode As Integer, Shift As Integer) If Shift = acCtrlMask And KeyCode = vbKeyV Then KeyCode = 0 End Sub Un saludo. Luis |
||
El Búho es un pajarraco
|
||
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 30/Abril/2020 a las 17:50 | |
Hola!
Y para desactivar el botón derecho del ratón para que no copie de un control (Text Box" de formulario:- propiedades de formulario >>>>>> Pestaña Otros >>>>>>> Menú Contextual lo pones a "No" así ya tienes todo lo que necesitas. |
||
Un Saludo.
|
||
Dabellaso
Asiduo Unido: 18/Noviembre/2012 Localización: España Estado: Sin conexión Puntos: 338 |
Enviado: 30/Abril/2020 a las 18:52 | |
No es más sencillo pasar el contenido del Textbox a una variable y analizar/limpiar esa variable con una de las funciones LimpiaTexto que hay por el foro antes de hacer el Lookup?. De ese modo, si el usuario se las ingenia de alguna manera para introducir caracteres como comas, asteriscos, apostrofes, signos "=", o palabras como True, simplemente antes de hacer el DlookUp le echamos fuera. Así, esos caracteres nunca llegarán al SQL y no podrán inyectar código La idea es comprar la cadena limpia con la cadena introducida, si no son iguales, es que la introducida tiene caracteres no permitidos y actuamos avisando, o cerrando o lo que queramos Hace poco xavi puso varios ejemplos en este hilo: A mi me gustó este:
Como alternativa, antes de conceder el acceso, puedes comprobar la cantidad de registros que devuelve la consulta con el were introducido Haciendo un DCount antes del DLookup Si la consulte devuelve un solo registro, todo bien, si devuelve varios, puedes pensar que han inyectado y negar el acceso. Ed. Por dar ideas.... se me ocurre que si quieres, en lugar de buscar el usuario con una consulta, puedes buscarlo con un recordset, así evitas el tema se las inyecciones, y además puedes permitir cualquier carácter en el password o el usuario. (Esto último no lo he comprobado) Editado por Dabellaso - 30/Abril/2020 a las 20:08 |
||
El saber no ocupa lugar, sólo tiempo
|
||
WarriorGeardark
Nuevo Unido: 29/Abril/2020 Localización: Mexico Estado: Sin conexión Puntos: 32 |
Enviado: 03/Junio/2020 a las 19:47 | |
gracias lo tomare en cuenta tus consejos, apenas soy nuevo en esto de vba, buscare la forma de lograr un login mejor optimizado.
|
||
Responder | Página 12> |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |