Consejos de seguridad para .NET

Seguridad para aplicaciones .NET – 5 consejos a seguir

Dotnetsafer
Dotnetsafer

A la hora de programar uno de los aspectos que debemos tener en cuenta es la seguridad de nuestro código, desde Dotnetsafer queremos darte estos 5 Consejos de seguridad para aplicaciones .NET.

Debemos mantener un equilibrio entre las buenas prácticas, el rendimiento del software y la seguridad de este.

Como mencionamos anteriormente, esto son aspectos básicos que cualquier programador podría empezar a implementar hoy mismo, en este blog dispones de más artículos con soluciones y consejos de seguridad para aplicaciones .NET más avanzados.


1. Evitar las conexiones directas con bases de datos de tus aplicaciones


Muchas veces nuestras aplicaciones requieren de bases de datos, lo más sencillo para utilizar estas bases es usar un conector desde nuestra aplicación.

En este ejemplo de una aplicación de C# en .NET mostraremos el conector MySqlConnection

Para realizar una conexión utilizaríamos un código como este:

Esto puede ser práctico a nivel de sencillez, pero no lo es respecto a la seguridad.

De está forma estamos exponiendo nuestro servidor, puerto, usuario y contraseña a cualquier persona que tenga acceso a la aplicación.

¿Qué soluciones podemos adoptar?

Aquí deberemos tener en cuenta varios aspectos, uno de ellos como está estructurada nuestra aplicación y las necesidades de esta.

De forma sencilla podríamos aplicar las siguientes medidas:

  • No usar archivos Universal Data Link (UDL)
  • Encriptar los archivos de configuración
  • Usar Windows Authentication.
  • Usar Azure Key Vault Secret.

Si necesitamos una seguridad completa y avanzada recomendamos externalizar las conexiones.

Vamos a seguir con los consejos de seguridad para aplicaciones .NET.


2. Encriptación de datos para aumentar la seguridad en tus aplicaciones .NET

Cada vez que trabajemos con datos, ya sean configuraciones de la aplicación o información sobre usuarios debemos mantener los datos encriptados en todo momento.

Por ejemplo, si almacenas archivos con información no deberían ser en texto plano, aquí tienes una solución básica para solventar el problema.

Con esta clase podrás manipular archivos con algo más de seguridad, por ejemplo:

Esto es un pequeño ejemplo para empezar a integrar la seguridad y la encriptación en los datos que manipule nuestra aplicación, tanto archivos como cadenas, conexiones, documentos, etcétera.

En este ejemplo hemos visto que la contraseña “contraseñaSegura1234” está en el código a simple vista, eso no debería ser así, la mejor opción sería externalizar esta contraseña y cargarla de forma segura, como hacíamos por ejemplo con las cadenas de conexión de mySql usando Azure Key Vault Secret.


3. Usar la API de protección de datos en ASP.NET Core

En ASP .NET Core podríamos usar IDataProtector para proteger la información y los documentos que manipulemos en nuestras aplicaciones.

Este método es muy sencillo de implementar y dispone de varías características que lo hacen realmente bueno.

consejos de seguridad para proteger tus aplicaciones

Aquí os proporcionamos una solución para ayudaros a implementar esta clase de forma sencilla.

Para poder usarla en la clase StartUp.cs de nuestra aplicación ASP .NET Core en el método ConfigureServices añadiremos:

Después lo cargaremos como parámetro en el constructor de las clases en las que queramos implementarlo, después podremos utilizarlo para encriptar la información, por ejemplo:

Solo con estas medidas nuestra aplicación ya será mucho más segura, ahora falta implementarlo de forma correcta para velar por la seguridad de nuestros clientes.


4. Actualizar las dependencias y librerías externas para mejorar la seguridad de tus aplicaciones

maneras de mejorar la seguridad de tus aplicaciones

Esta recomendación puede ser obvia, pero no muchas personas la tienen en cuenta, cuando programamos en .NET hacemos uso de muchas librerías, normalmente muchas de ellas ofrecidas por Microsoft, otras desarrolladas por usuarios o empresas, como mucho de los paquetes NUGET.

Es importante que comprobemos que librerías está usando nuestra aplicación e informarnos sobre las vulnerabilidades conocidas o los posibles riesgos de seguridad que puedan causar.

También es importante tener en cuenta las versiones de framework que estamos utilizando para nuestra aplicación, ya que podría haber quedado obsoleta y sin mantenimiento y podría suponer un riesgo para la seguridad.

Aquí te proporcionamos información sobre las versiones de framework actuales:

.NET Framework

.NET Framework 4.8.NET Framework 4.7.2.NET Framework 4.7.1.NET Framework 4.7
.NET Framework 4.6.2.NET Framework 4.6.1 .NET Framework 4.6  .NET Framework 4.5.2
.NET Framework 4.5.1 .NET Framework 4.5     .NET Framework 4  .NET Framework 3.5
.NET Framework 3.0  .NET Framework 2.0 .NET Framework 1.1  .NET Framework 1.0

Puedes consultar la información aquí: https://docs.microsoft.com/es es/dotnet/framework/migration-guide/versions-and-dependencies


.NET Core

Versions of .NET Core available for download:

VersionStatus  Latest release Latest release dateEnd of support
.NET 6.0Preview6.0.0-preview.22021-03-11
.NET 5.0Current5.0.42021-03-09
.NET Core 3.1 (recommended)LTS3.1.132021-03-092022-12-03
.NET Core 3.0End of life3.0.32020-02-182020-03-03
.NET Core 2.1LTS   2.1.262021-03-092021-08-21
.NET Core 2.2End of life2.2.82019-11-192019-12-23
.NET Core 2.0End of life2.0.92018-07-102018-10-01
.NET Core 1.1End of life1.1.132019-05-142019-06-27
.NET Core 1.0End of life1.0.162019-05-142019-06-27

Puedes consultar aquí las versiones: https://dotnet.microsoft.com/download/dotnet-core


.NET Standard

.NET Standard 1.0 1.11.21.31.41.51.62.02.1

Aquí dispones de más información: https://docs.microsoft.com/es-es/dotnet/standard/net-standard

Además, una tabla con las vulnerabilidades conocidas de las librerías más comunes de .NET

system.net.http5 High Severity
1 Medium Severity
system.io.pipelines1 High Severity
.kestrel.core2 High Severity
2 Medium Severity
system.net.websockets
.websocketprotocol
1 Medium Severity
microsoft.data.odata1 High Severity
microsoft.aspnetcore.websockets1 High Severity
1 Medium Severity
system.security.cryptography.xml1 High Severity
microsoft.aspnetcore.server.
kestrel.transport.abstractions
1 High Severity
system.net.security3 High Severity
1 Medium Severity
microsoft.aspnetcore.identity3 High Severity

5. Utilizar sistemas de seguridad para aplicaciones y ofuscación de código

Una de las soluciones más efectivas y sencillas es utilizar una herramienta que se encargue de proteger tu aplicación.

como mejorar la seguridad de tus aplicaciones

Las buenas practicas de seguridad antes mencionadas son importantes para mantener tu aplicación .NET segura pero no son suficientes para garantizar la integridad de los métodos, conexiones y demás aspectos vulnerables.

En Dotnetsafer te ofrecemos la posibilidad de proteger tus aplicaciones de forma gratuita y te proporcionamos protecciones y características más avanzadas para que adaptes la seguridad a las necesidades de tus aplicaciones.

Ventajas de utilizar un sistema de seguridad para .NET:

  • Evita perder tiempo para proteger tus aplicaciones.
  • No requiere conocimientos sobre seguridad.
  • Permite utilizar diversas protecciones y características.
  • Incorpora las últimas técnicas de seguridad en tu aplicación con un par de clics.
  • Detecta y corrige las vulnerabilidades de forma automática.
  • Te permite centrarte en el desarrollo y la integración continua sin preocuparte por la seguridad, ya que esta correrá de su parte.

Y demás ventajas que hace que un sistema de seguridad te haga ahorrar tiempo y dinero con la publicación de tu software.

Otro aspecto importante es que el rendimiento del desarrollo en equipo puede verse muy reducido si implementamos la protección manualmente porque cada vez que haya una actualización deberemos proteger de nuevo la aplicación y el desarrollo se puede volver muy tedioso por que el código es más difícil de entender, menos práctico y menos óptimo.

Además, muchas de las protecciones que podemos incorporar manualmente son a nivel de conexiones, manipulación de archivos, encriptación y buenas prácticas en el desarrollo, pero para que el software sea seguro y de pueda garantizar la integridad de nuestra propiedad intelectual es necesario utilizar métodos y algoritmos más avanzados.

Por ejemplo, Dotnetsafer ofrece protecciones como:

  • Control de flujo: que modifica el flujo de los métodos para que no pueda ser representado.
  • Protección de constantes: Que encripta y protege las constantes de la aplicación para que no se pueda obtener la información sensible.
  • Renombre: Que se encarga de renombrar todos los tipos, las clases, métodos y variables de nuestra aplicación para que el funcionamiento no se pueda entender.

Y muchas más protecciones, si deseas informarte sobre todas las protecciones que Dotnetsafer ofrece te recomendamos ir a la sección https://dotnetsafer.com/shield/protections y podrás obtener más información sobre cada una de ellas en la documentación.

Esperamos que este articulo le haya sido de ayuda, y le invitamos a empezar a proteger sus aplicaciones de forma gratuita y con un par de clicks 😎

Summary
Article Name
5 TRUCOS de seguridad para tus aplicaciones .NET

0 Comments

Leave a Reply

More great articles

Conversions C# Implicit Vs Explicit

Conversiones… Implícitas VS Explícitas?

Después de muchos años programando en .NET , es posible que ya te hayas dado cuenta de que el framework…

Read Story
Top 5 tools for developoer

Top 5 herramientas para cualquier desarrollador de .NET

Visual Studio es la mejor herramienta para el desarrollo de .NET gracias a todas las facilidades que nos ofrece. Aunque…

Read Story
Blazor WebAssembly

Qué es Blazor WebAssembly? La unión de .NET 5 y Blazor

Desde la última versión de .NET 5 en NET Conf 2020 , todos sus usuarios han visto de primera mano…

Read Story
Arrow-up