Seguridad en aplicaciones realizadas con Awe
Arquitectura
Awe es un framework de servidor, donde toda la lógica de su aplicación, negocio y interfaz de usuario reside en el servidor. A diferencia de los frameworks orientados a cliente, las aplicaciones Awe nunca exponen su código al navegador donde las vulnerabilidades pueden ser aprovechadas por un atacante.
It uses Spring Security
utilities to manage and configure all safety-related aspects.
Bibliotecas de terceros
AWE actualiza constantemente las dependencias a librerías de terceros cuando se liberan parches de seguridad para ellas. Cuando es necesario se crean nuevas versiones de mantenimiento de Awe para aplicar parches. Furthermore, AWE has a public SonarCloud
server to be
audited and constantly adapt to new security flaws.
You can check here.
Protección contra ataques CSRF
Todas las peticiones entre el cliente y el servidor incluyen un token CSRF específico de sesión de usuario. Awe maneja toda comunicación entre el servidor y el cliente, por lo que no necesitas recordar incluir los tokens CSRF manualmente.
Authorization: f910520d-28b8-4a2b-6e98-f32822bb1677
Sec-Fetch-Site: same-origin
X-XSRF-TOKEN: faad4d18-035a-4394-ab5f-be3bae2a1a09
Cookie: XSRF-TOKEN=faad4d18-035a-4394-ab5f-be3bae2a1a09; JSESSIONID=7177A217096E0BF9E4D47C967C74431D
Cross-Site Scripting (XSS)
Awe tiene protección integrada contra ataques de cross-site scripting (XSS). Awe convierte todos los datos para usar entidades HTML antes de que los datos se procesen en el navegador del usuario.
El filtrado está habilitado por defecto, así que al añadir el encabezado normalmente solo asegura que está habilitado e indica al navegador qué hacer cuando se detecta un ataque XSS.
X-XSS-Protection=1; mode=block
Autenticación y autorización
Awe te permite elegir qué sistema de autenticación y autorización quieres usar, en lugar de definir uno específico.
Awe is fully compatible with the most used security solutions in the Spring Boot ecosystem like In memory
, Database
, LDAP
, OAuth
, Oauth2
, ...
Spring Security en Awe
Awe proporciona beans
de configuración para gestionar la seguridad en su aplicación. Puede usarlos o sobrescribirlos y crear su método de autenticación personalizado.
The security configuration is in SecurityConfig
and AWEScreenSecurityAdapter
classes and select the authentication method that you want.
################################################
# Authentication
################################################
# Authentication mode (ldap | bbdd | in_memory | custom)
awe.security.auth-mode=bbdd
################################################
# Custom authentication
################################################
#Provider class beans, separated by comma for multiple providers.
awe.security.auth-custom-providers=
You can always create your own Http web security config class extending WebSecurityConfigurerAdapter
.
@Configuration
public class CustomSecurityConfig extends WebSecurityConfigurerAdapter {
/**
* Spring security configuration
*
* @param http Http security object
* @throws Exception Configure error
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
// Your custom configuration
}
}
SSL y HTTPS
Awe recomienda siempre a los desarrolladores que establezcan endpoints
seguros y ejecuten toda la comunicación exclusivamente bajo HTTPS.
Awe funciona directamente con HTTPS sin necesidad de que el desarrollador deba configurar nada en su código de aplicación.
Por favor, consulte la documentación de su contenedor servlet para obtener detalles sobre cómo configurar HTTPS en su servidor.
Validación de datos
En las aplicaciones desarrolladas con Awe, el API de enlace de datos soporta la validación de datos en el servidor, que no puede ser sobrepasado por ataques en el lado del cliente.
Sin embargo, Awe tiene una acción de validación en el lado del cliente para hacer una doble comprobación y aumentar la capacidad de respuesta de la aplicación,
pero el desarrollador debe ser consciente de que estas acciones deben ser utilizados exclusivamente para conveniencia, ya que son fácilmente eludidos en el navegador.
Además, el desarrollador es libre de usar cualquier API de Java para validar los datos, incluyendo la conexión a servicios externos.
There is also a built-in integration with Java’s Bean Validation (JSR 303
) standard.
Inyección SQL
Awe es un framework de IU de backend-agnóstico, no trata directamente con acceso backend; en cambio, utiliza un framework backend
(e.. Spring Data) para gestionar esto. Awe provides mitigation for SQL injections using techniques like Parameterized Queries with QueryDSL.
Internally uses PreparedStatement
and User data sanitization.
QCustomer customer = new QCustomer("Foo");
SQLTemplates dialect = new HSQLDBTemplates(); // SQL-dialect
SQLQuery query = new SQLQueryImpl(connection, dialect);
List<String> lastNames = query.from(customer)
.where(customer.firstName.eq("Foo"))
.list(customer.lastName);
SELECT c.last_name FROM customer c WHERE c.first_name = 'Foo'
Autenticación de dos factores (2FA)
We've recently developed a new two-factor authentication system based on authentication apps such as Google Authenticator.
There are three ways to manage this two-factor authentication in AWE based on the awe.totp.security.enabled
property:
disabled
: Two-factor authentication is disabled and it won't ask for a temporal code on access.optional
: The user can enable two-factor authentication on the settings screen and temporal code will be asked on login.
force
: On login, if user has not enabled two-factor authentication, a screen will raise with the QR code to force the user to enable two-factor authentication. Después de esa pantalla, se pedirá al usuario el código temporal basado en el código secreto previamente generado.