Indice de artículos

Artículos sobre C # y programación.


Almacenamiento de contraseñas de usuario

Una de las necesidades básicas de los sistemas de seguridad es el almacenamiento de contraseñas de usuario en bases de datos o sistemas de archivos.

La principal dificultad en este caso, es impedir que un atacante que obtenga los datos de una tabla de usuarios y contraseñas pueda descifrar la clave de un usuario y suplantar así su identidad.

Leer más...

Almacenamiento de datos sensibles con DPAPI

En ocasiones, tenemos que almacenar las contraseñas u otros datos sensibles en un archivo o una base de datos para utilizarlos posteriormente.

Para guardar estos datos de forma segura, podemos utilizar uno de los sistemas criptográficos existentes como AES o Triple DES . Nuestro problema es que estos sistemas criptográficos precisan una contraseña y de dónde obtener esta contraseña.

Leer más...

La inseguridad de los certificados digitales

Vamos a comenzar un proyecto nuevo con una empresa externa. Es sencillo: un servicio REST que envía y recibe documentos firmados y encriptados digitalmente con un certificado digital .

En la última reunión, la susodicha empresa externa le pasó a mi jefe una copia en un pendrive del certificado que vamos a utilizar. Mi jefe, que nunca deja de sorprenderme, me lo envió adjunto en un correo electrónico y puso en copia a dos personas de negocio y a su secretaria, supongo que para que tuvieran constancia de que el proyecto estaba a punto de empezar.

Leer más...

Trazas de comunicaciones en C#

Estos días, he tenido que enfrentarme a una aplicación para transmitir archivos por sFTP .

El problema principal, aunque parezca lo contrario, no ha sido la implementación del protocolo en sí, si no averiguar porqué fallaban ciertas rutinas de comunicaciones y saber qué estaba pasando por debajo, es decir, qué intentaba hacer.NET cuando le pedía abrir un stream o cambiarlo por un stream SSL.

Leer más...

Firma digital de archivos XML en C#

Cuando se trabaja con archivos XML, en ocasiones nos solicitan que este archivo se firme digitalmente utilizando una clave privada.

XmlDSignature es un protocolo estándar para la firma de cadenas XML y define una serie de nodos que se añaden a un archivo XML para firmarlo. La buena noticia es que.NET tiene una librería específica para el tratamiento de este tipo de archivos bajo el espacio de nombres System.Security.Cryptography.Xml .

Leer más...

¿Qué es oAuth?

A poco que hayáis intentado programar librerías que utilicen las APIs de Twitter, Facebook o Google posiblemente os hayáis tropezado con el término OAuth.

Pero, ¿qué es oAuth ?

Leer más...

Cómo convertir SharpDevelop en una aplicación Portable

En ocasiones, resulta muy útil poder tener instalado en una máquina, como por ejemplo un servidor de producción, un IDE para hacer pequeñas pruebas o depuración paso a paso, sin embargo, por restricciones de seguridad es posible que no podamos instalarlo sin más. En otros casos lo que queremos es llevar un IDE de programación con nosotros en una llave USB para utilizarla en cualquier ordenador.

Si utilizamos normalmente tecnologías.NET podemos utilizar el IDE de código abierto SharpDevelop configurándolo para que se ejecute como una aplicación portable .

Leer más...