Web con gambas, a ver si entre todos lo logramos - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: WebApp/WebForms (https://gambas-es.org/forum-23.html) +--- Tema: Web con gambas, a ver si entre todos lo logramos (/thread-605.html) |
RE: Web con gambas, a ver si entre todos lo logramos - jguardon - 27-11-2021 Hola, omoreno Varias consideraciones: El algoritmo SHA-256 se considera bastante seguro por el momento. Si bien es cierto que ya existen diccionarios inmensos de claves asociadas al hash, sería muy muy difícil acertar en poco tiempo con una de estas claves. Piensa que el algoritmo genera siempre un hash de longitud fija de 64 caracteres (bits) independientemente de la longitud de la cadena encriptada. En algunos casos, los programadores añaden lo que se llama "salt" a la cadena encriptada, es decir un "condimento" añadido a tu gusto que puede ser cualquier cosa. La ventaja de saber que la cadena encriptada siempre tiene 64 bit de longitud, es que podemos añadir la "salt" en cualquier parte de esa cadena, pero esa "salt" podría o no ser fija, es decir, puede ser una cadena aleatoria generada por nosotros y fijada en el código o prodría ser una cadena generada mediante otro algoritmo, pero basada en algo fijo, como por ejemplo un dato del usuario que no cambie. De ese modo obtendríamos otra cadena que consiste en el hash original SHA-256 con una cadena en medio, en una posición conocida, que mediante tu propia función vas a generar y luego vas a comparar de forma sencilla. La cadena encriptada se envía tal cual por internet hacia la base de datos, pero lógicamente siempre es mejor usar una conexión segura SSL. En resumen, en la parte del cliente (navegador) se genera el hash SHA-256 y se envía al servidor. Allí, el servidor antes de almacenarla en la BD la primera vez, la mezcla con la Salt y entonces la guarda en la BD. En posteriores consultas, cuando el usuario hace login, se envía el hash de su password y mediante una función ya en el servidor, se vuelve a crear esa cadena cocinada con "salt" y ahí es cuando ya se compara con la que está almacenada en la base de datos. De esta manera, aunque transmitas en claro el hash desde tu navegador hacia el servidor, y alguien en medio intercepte esa clave encriptada, no podrá usarla para nada, porque realmente es otra cosa lo que hay en la BD. Dicho eso, hoy en día ya no hace falta pagar por un certificado SSL, porque desde que existe Let's Encrypt yo no he vuelto a hacerlo. Pero eso ya depende del nivel de seguridad exigido para cada caso. De manera que siempre sería necesario o recomendable usar conexiones cifradas en la web. P.D. Se me olvidó añadir que en caso de pérdida de contraseña por el usuario, siempre hay que generar una nueva, porque el algoritmo SHA-256 es unidireccional. Además por seguridad, se debería exigir que la nueva contraseña no coincida con la anterior, puesto que ésta está almacenada en la BD y se podría comparar antes de almacenar la nueva (cosa que no tiene sentido si el usuario ha olvidado la contraseña, pero eso sí sería aplicable si el usuario sólo desea cambiarla). Saludos RE: Web con gambas, a ver si entre todos lo logramos - omoreno - 27-11-2021 Hola, jguardon. Gracias por la información. Lo que comentas se puede hacer con Crypt.Check (gb.crypt) Si la frase la genero aleatoria por cada usuario y esta no la tiene el navegador antes del login, me pregunto: ¿Cómo genero desde el navegador del cliente el hash original SHA-256? Código: clavec = crypt.SHA256(txoPassword.Text, "?????????????") RE: Web con gambas, a ver si entre todos lo logramos - jguardon - 27-11-2021 (27-11-2021, 16:13)omoreno escribió: ¿Cómo genero desde el navegador del cliente el hash original SHA-256? En el lado del cliente siempre has de usar javascript, no hay otro modo. Aunque la página servida se haya generado en gambas, lo que llega al navegador del cliente es solamente HTML, JavaScript y CCS (hojas de estilos). Puedes escribir JavaScript en un fichero de gambas y retornarlo convenientemente como salida de tu script donde corresponda. Entiendo que tienes conocimientos de programación Web con HTML, JS y CSS y sabes cómo se estructura una página web para que no haya errores en el navegador. Pero JavaScript está muy bien implementado en todos los navegadores modernos y, aunque es bastante complicado usar funciones que implementen SHA-2 cuando usamos una conexión segura (básicamente porque todo lo que transmitimos hacia el servidor ya está encriptado por la conexión SSL y JS considera que ya no es necesario volver a encriptar), es conveniente hacerlo por si no es nuestro caso y en algún momento solo usamos http en lugar de https. Te dejo un enlace que he encontrado, que por cierto parece traducido automáticamente y suena raro al leerlo, pero mi opinión es que uses librerías externas si no quieres complicarte con JavaScript puro. https://www.it-swarm-es.com/es/hash/hay-implementaciones-de-sha-256-en-javascript-que-generalmente-se-consideran-confiables/1040422498/ Aquí te dejo una búsqueda hecha en github con varias implementaciones. https://github.com/search?q=js+sha-256 Cualquier duda, pregunta de nuevo. Saludos RE: Web con gambas, a ver si entre todos lo logramos - omoreno - 02-12-2021 Hola Jguardon, Tincho. Gracias por los datos y los link. Logre modificar los Script para enviar un hash salado, pero después de verificar tus sugerencias y las de otros en la internet, por ahora me quedo con sus recomendaciones:
Tincho recomendastes ver el ejemplo WebDemo de Olivier CRUILLES, lo descargue de la granja, pero me sale que en mi IDE no esta el componente: WebTree. Compare las librerías del componente gb.web.gui con el sitio de Gambas y vi que me faltan dos: WebTree y Key, luego pulse el botón recargar de la ventana componentes y aparecieron, pero aun me sale error relacionado a WebTree. ¿Cómo se debe hacer para actualizar las librerías de los componentes en el IDE? Nota: Todavía veo que cuando se abre el WebForm en varios Tab del navegador algunos objetos pierden su normal funcionamiento, basado en eso cambie la creación de WebForm para que una instancia de cada formulario sea creada en el evento _new con este cambio no se apilan los formularios, pero los botones de radio aun siguen funcionando mal… creo que la cuestión podría estar en la forma como Gambas crea las instancias nuevas del WebForm cuando se abre en otro Tab…. Seguimos probando. RE: Web con gambas, a ver si entre todos lo logramos - tincho - 03-12-2021 (02-12-2021, 23:45)omoreno escribió: Tincho recomendastes ver el ejemplo WebDemo de Olivier CRUILLES, lo descargue de la granja, pero me sale que en mi IDE no esta el componente: WebTree. Ok, si en efecto sucede eso porque el ejemplo solo funciona con la versión en desarrollo. Para que funcione hay 3 opciones:
RE: Web con gambas, a ver si entre todos lo logramos - tincho - 09-06-2022 Retome el proyecto web. En el primer post pongo el enlace al proyecto en gitlab. Mi idea es crear un programa base que tenga todo para luego con eso hacer cualquier web de empresa en la que se manejen datos. como todos aquí sabemos un poco del asunto seguramente logremos algo funcional. Bien, aca una pregunta:
RE: Web con gambas, a ver si entre todos lo logramos - omoreno - 10-06-2022 (09-06-2022, 09:54)tincho escribió: ¿Como se puede usar el elemento canvas de javascript con gambas webforms? Si desde javascript requieres un elemento tipo canvas puedes usar un WebContainer de Gambas: Crear QR con javascript Preguntas:
RE: Web con gambas, a ver si entre todos lo logramos - tincho - 11-06-2022 (10-06-2022, 19:15)omoreno escribió: Si desde javascript requieres un elemento tipo canvas puedes usar un WebContainer de Gambas: Crear QR con javascript Muchas gracias, ese tema me vendrá bien, ademas hay un resumen de Hebert de lo que hay que hacer para desplegar la aplicación. (10-06-2022, 19:15)omoreno escribió: Si, intento hace algo como lo que muestras en el GIF que adjuntaste, que por cierto, tiene un aspecto muy profesional, te felicito. (10-06-2022, 19:15)omoreno escribió: ¿como muestras el webform: en su propia ventana o incrustado en un objeto Web.? De momento estoy mostrándolo sin incrustarlo. (10-06-2022, 19:15)omoreno escribió: ¿Desarrollaras cada plataforma por separado?¿Te refieres a cada formulario? ¿Una plataforma es un formulario WebForm? Si es eso intento hacer todo en un solo formulario en el que uso paneles WebContainer para poner cada parte visual del programa. Por ejemplo: Código: Public Sub WebForm_Open()
Pero estoy aprendiendo a usar estos controles, asi que de momento no se si este camino es el mas práctico o por el contrario conviene incrustar los formularios dentro de los webcontainer y crear varios formularios para cada tarea. RE: Web con gambas, a ver si entre todos lo logramos - tincho - 11-06-2022 Agregue una lista de tareas (en la primera entrada) a realizar para desplegar una aplicación web gambas en un servidor apache adaptando un poco lo que propuso originalmente Heberth en otro hilo. https://gambas-es.org/showthread.php?tid=463&pid=2516#pid2516 RE: Web con gambas, a ver si entre todos lo logramos - tincho - 11-06-2022 ¿Alguien tiene un ejemplo de como rellenar los datos de un WebTable? estos saldrian de un result de una base de datos. |