Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistema L.A.Z
Documento de la Arquitectura del Software
Versión 0.1
Materia: Seguridad Informática
Docente: Marco Pusda
Estudiantes: Cuascota Roberto, de la Torre Daniel, Pozo Carlos, Zamora Oliver
Fecha: 13/06/2023
Tema: OWASP
Historia de Revisión
Fecha Versión Descripción Autor
Roberto Cuascota P.
Tabla de Contenidos
Contenido
1. Introducción 3
1.1 Propósito 3
1.2 Alcance 3
1.3 Definiciones, Siglas, y Abreviaciones 3
1.4 Referencias 3
1.5 Vista Global 4
2. Representación Arquitectónica 4
5. Vista Lógica 7
5.1 Visión general 7
5.1.1 Diagrama de Clases 7
5.1.2 Iniciar sesión – cerrar sesión 7
5.1.3 Registrar clientes 7
2
5.1.4 Generar factura 8
5.1.5 Registrar Prendas 8
6. Vista de Implantación 8
6.1 Configuración Estándar 8
Vista de Implementación 9
6.2 Vista General 9
7. Vista de Seguridad 9
7.1 Modulo Control de Acceso Inicio de sesión: 9
7.2 Modulo Facturación: 10
7.3 Módulo de registro de clientes: 12
7.4 Módulo de inventario: 13
7.5 Módulo de reportes 14
1. Introducción
1.1 Propósito
El presente proyecto tiene como objetivo diseñar e implementar un sistema integral para una lavandería de
ropa, con el fin de mejorar sus operaciones y mejora de los usuarios. Se realizará con distintas tecnologías y
herramientas que permitirán gestionar, automatizar y controlar diferentes aspectos del negocio, desde la
recepción y clasificación de ropa hasta la entrega final al cliente.
1.2 Alcance
Definir y unificar los criterios de desarrollo del Sistema L.A.Z con respecto a los aspectos arquitectónicos
del proyecto, mostrando los detalles sobre los paquetes, capas y procesos que conformaran el sistema.
1.3 Definiciones, Siglas, y Abreviaciones
A continuación, presentamos las abreviaturas y definiciones de los términos de mayor importancia que se
encuentran en el documento.
3
1.5 Vista Global
Con el desarrollo del sistema L.A.Z ofrece una visión integral de una solución que tiene como objetivo
optimizar y agilizar los procesos de lavado y gestión de prendas. Este sistema interactúa con el empleado y
dueño del negocio, proporcionando una plataforma eficiente para la recepción, clasificación y seguimiento
de la ropa.
2. Representación Arquitectónica
La representación arquitectónica del Sistema L.A.Z se encuentra basada en el modelo de MVC. En el
transcurso del documento se tratará más a fondo los detalles de cada una.
Con el desarrollo del sistema Lavandería Mónica, se busca obtener una aplicación con un alto nivel de
portabilidad, fácil distribución y reusabilidad. En sus etapas iniciales, la aplicación será instalada en un servidor de
Apache con PHP y una base de datos MySQL localmente. Sin embargo, se busca obtener un producto de software
que se pueda instalar en cualquier servidor compatible con PHP y MySQL, con un mínimo esfuerzo y un
rendimiento óptimo.
Entre las restricciones principales del desarrollo del sistema Lavandería Mónica se encuentran: hacer uso de
tecnologías de software libre (en nuestro caso, el lenguaje PHP y el manejador de base de datos MySQL) y el uso
del patrón de diseño MVC para el desarrollo de la herramienta. Además, se aplicará la metodología OWASP (Open
Web Application Security Project) para garantizar un enfoque sólido de seguridad en la aplicación.
Por último, se tiene como meta lograr que el sistema Lavandería Mónica pueda ejecutarse sin percances en los
navegadores web Google Chrome, Mozilla Firefox, Opera, aplicando las mejores prácticas de seguridad definidas
por OWASP. De esta manera, se busca garantizar la utilidad y accesibilidad del sistema para la mayor cantidad de
usuarios posible, sin comprometer la seguridad de la aplicación.
4
4. Vista de Casos de Uso
4.1 Realizaciones de los casos de uso
4.1.1 Iniciar sesión – cerrar sesión
Validar credenciales
Usuario
Cerrar sesion
Ingresa la cedula
Ingresar Telefono
Finalizar Registro
5
4.1.3 Generar factura
generar_factura
eliminar_factura
usuario
ver_factura
imprimir_factura
6
5. Vista Lógica
5.1 Visión general
5.1.1 Diagrama de Clases
7
5.1.2 Iniciar sesión – cerrar sesión
Clientes
- cedula : String
- nombre : String
- apellido : String
- telefono : String
+ <<Getter>> getCedula () : String
+ <<Setter>> setCedula (String newCedula) : void
+ <<Getter>> getNombre () iniciar sesion : String
+ <<Setter>>
- UsuariosetNombre
: int(String newNombre) : void Autenticacion
+ <<Getter>> getApellido
- Contraseña : string () : String
+ <<Setter>> setApellido (String newApellido) : void
+ <<Getter>> getUsuario () : int
+ <<Getter>> getTelefono () : String
+ <<Setter>> setUsuario (int newUsuario) : void + Verificarusuario() ()
+ <<Setter>> setTelefono (String newTelefono) : void
+ <<Getter>> getContraseña () : string + Verificarcontrseña() ()
+ <<Setter>> setContrasena (string newContraseña) : void
Factura Detalles_Factura
numero : int - id_detalle : int
fecha : Date - servicio : Servicio
cliente : Cliente
+ <<Getter>> getid_detalle () : int
- detallesFactura : int
+ <<Setter>> setid_detalle (int newId_detalle) : void
+ <<Getter>> getnumero (): int + <<Getter>> getservicio () : Servicio
+ <<Setter>> setnumero (int newNumero): void + <<Setter>> setservicio (Servicio newServicio) : void
+ <<Getter>> getfecha (): Date
+ <<Setter>> setfecha (Date newFecha): void
+ <<Getter>> getcliente (): Cliente
+ <<Setter>> setcliente (Cliente newCliente) : void
8
Generar factura
6. Vista de Implantación
6.1 Configuración Estándar
El Sistema de lavandería L.A.Z se está desarrollando utilizando una configuración sencilla de MySQL y
PHP para un emprendimiento local ubicado detrás del seguro. El sistema se hospedará y ejecutará desde un
servidor principal basado en PHP, que inicialmente será una computadora personal dedicada. Se utilizará
MySQL como el manejador de base de datos, que se ejecutará en el mismo servidor. Los usuarios podrán
acceder al sistema a través de estaciones de trabajo conectadas directamente al servidor a través de Internet,
sin embargo, no se requiere conocer la dirección IP del servidor como se mencionaba anteriormente. Para
utilizar el sistema, los clientes simplemente necesitarán ejecutar un navegador web en sus dispositivos.
Aunque en el ejercicio real no se aplica, se recomienda tener un servidor de respaldo para monitorear el
servidor principal y detectar cualquier falla que pueda ocurrir.
9
Vista de Implementación
6.2 Vista General
Para la implementación del Sistema de lavandería L.A.Z, se utilizará el patrón de diseño Modelo-Vista-
Controlador (MVC). Este patrón permitirá dividir el software en tres capas principales, brindando un mejor
entendimiento del sistema y facilitando las tareas de desarrollo y mantenimiento de la aplicación.
1. Modelo: El Modelo se encargará de procesar la información y gestionar los datos del sistema de
lavandería. En este caso, se utilizará un gestor de bases de datos MySQL para almacenar y admi-
nistrar los datos. Esta capa responderá a las solicitudes de información del estado del sistema pro-
venientes de la capa de Vista, así como a las instrucciones de modificación del estado enviadas por
la capa de Controlador.
2. Vista: La Vista será la capa encargada de presentar la interfaz de usuario al cliente. Aquí se
gene- rará el código para crear la interfaz de usuario utilizando lenguaje XHTML y componentes
de PHP. La Vista mostrará la información del sistema y permitirá capturar los datos ingresados
por los usuarios. Esta capa es la única que el usuario final podrá ver del sistema de lavandería.
3. Controlador: El Controlador actuará como intermediario entre la capa de Vista y la capa de Mo-
delo. Su función principal es recibir las solicitudes del usuario a través de la capa de Vista y trans-
mitirlas a la capa de Modelo. Posteriormente, recibirá los datos generados por la capa de Modelo
y los enviará de vuelta a la capa de Vista para su visualización al usuario. Este ciclo se repetirá
cada vez que el usuario realice una acción o genere una solicitud en el sistema de lavandería.
Con la implementación del patrón MVC, se logrará una estructura clara y organizada del sistema de lavan-
dería L.A.Z. El uso de MySQL como gestor de bases de datos y PHP para el desarrollo permitirá crear una
aplicación eficiente y fácil de mantener en el contexto de un emprendimiento local de lavandería.
7. Vista de Seguridad
7.1 Modulo Control de Acceso Inicio de sesión:
- Inicio de sesión:
Seguridad A07:2021 - Fallas en la Identificación y Autenticación: Al registrar el
ingreso de un usuario, es importante verificar y autenticar correctamente las credenciales,
el rol al que petence el usario que ingresara:
10
Al recibir las credenciales de inicio de sesión como nombre de usuario y contraseña,
asegurando de que se validen correctamente antes de permitir el acceso. Esto implica
verificar si las credenciales son correctas y corresponden a un usuario autorizado.
Ejemplo de aplicacion
1. Durante el registro, solicita al usuario que proporcione su dirección de correo electrónico junto
con su nombre de usuario y contraseña.
2. Almacena de forma segura la dirección de correo electrónico asociada con el usuario en la base
de datos.
3. Cuando el usuario intenta iniciar sesión, solicita su nombre de usuario y contraseña como lo
harías normalmente.
4. Después de verificar las credenciales de inicio de sesión, genera un código de verificación único
y envíalo al correo electrónico registrado del usuario utilizando la función mail() de PHP o una
bi- blioteca de envío de correo electrónico, como PHPMailer o SwiftMailer.
5. El usurario debe escanear con su teléfono un código Qr para poder obtenerlos 6 dígitos para
acceder al sistema que verificará que es el usuario correcto
Ejemplo de aplicación
// Generar código de verificación único
$codigoVerificacion = generarCodigoVerificacion();
- Puedes utilizar técnicas de cifrado para proteger los datos sensibles almacenados
en la base de datos, como los números de factura y los detalles del cliente.
Laravel, un framework de PHP, ofrece funcionalidades integradas para el
cifrado de datos utilizando la encriptación AES-256-CBC.
// Cifrado de datos
$encryptedData = encrypt($sensitiveData);
// Descifrado de datos
$decryptedData = decrypt($encryptedData);
C. Sanitizar y validar los datos ingresados por el usuario para prevenir ataques de in-
yección:
- Laravel proporciona funciones para sanitizar y validar los datos ingresados por
el usuario. Por ejemplo, puedes utilizar las reglas de validación integradas en
Lara- vel para asegurarte de que los datos ingresados sean válidos y seguros.
$validatedData = $request->validate([
'nombre' => 'required|string|max:255',
'telefono' => 'required|string|max:15',
]);
12
Ejemplo de aplicación PDF utilizando el algoritmo AES-128
$pdf->SetProtection(['print'], '', null, 128, null, ['encrypt_metadata']);
Por ejemplo, al registrar un nuevo cliente, puedes realizar la validación del correo
electrónico y la generación de un token de activación para confirmar la dirección de
correo electrónico proporcionada por el cliente:
// Validar el formato del correo electrónico
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
// Mostrar mensaje de error
echo "El formato del correo electrónico no es válido.";
} else {
// Generar un token de activación
$tokenActivacion = generarTokenActivacion();
13
7.4 Módulo de inventario:
14
de Laravel y recibir alertas por correo electrónico cuando haya actualizaciones o
problemas de seguridad importantes.
if ($usuario->tienePermiso('agregar_producto')) {
// El usuario tiene permiso para agregar productos de limpieza
// Lógica para agregar el producto al inventario
// Guardar los cambios en la base de datos
// Mostrar mensaje de éxito al usuario
echo "El producto ha sido agregado al inventario correctamente.";
} else {
echo "No tienes permiso para agregar productos de limpieza.";
}
15