Está en la página 1de 6

Crear aplicaciones ASP.

NET
seguras
Autenticacin, autorizacin y comunicacin
segura
Consulte la Pgina de entrada como punto de partida y para obtener una descripcin
completa del documento Crear aplicaciones ASP.NET seguras.
Resumen
En este artculo se muestra cmo utilizar DPAPI en una aplicacin Web ASP.E! o un
ser"icio Web para ci#rar datos con#idenciales.
Cmo: Utilizar DPAPI (almacn del equipo) en
ASP.!"
Es #recuente $ue las aplicaciones Web necesiten almacenar datos importantes para la
seguridad% como cadenas de cone&in de base de datos y credenciales de cuentas de
ser"icio en arc'i"os de con#iguracin de aplicaciones. Por razones de seguridad% este
tipo de in#ormacin no debe almacenarse nunca en te&to sin ci#rar y debe ci#rarse
siempre antes de su almacenamiento.
En este artculo se describe cmo utilizar DPAPI en ASP.E!% lo $ue incluye aplicaciones
Web ASP.E!% ser"icios Web y componentes .E! (emoting alo)ados en ASP.E!.
En el cdigo incluido en este artculo se 'ace re#erencia a DPAPI mediante una
biblioteca de clases administradas cuya creacin se describe en *Cmo+ Crear una
biblioteca DPAPI* en la seccin (e#erencia de esta gua.
otas
DPAPI puede traba)ar con el almac,n del e$uipo o el almac,n del usuario -lo $ue
re$uiere $ue se cargue un per#il de usuario.. De #orma predeterminada% DPAPI
utiliza el almac,n del usuario% aun$ue se puede especi#icar $ue se utilice el
almac,n del e$uipo si se pasa el indicador C(/P!P(0!EC!120CA213AC4IE
a las #unciones DPAPI.
El uso del per#il de usuario permite un ni"el de seguridad adicional por$ue limita $ui,n
puede tener acceso al secreto. Slo el usuario $ue ci#ra los datos puede
desci#rarlos. Sin embargo% el uso del per#il de usuario re$uiere mayor traba)o de
desarrollo si se utiliza DPAPI en una aplicacin Web ASP.E!% por$ue es
necesario realizar pasos e&plcitos para cargar y descargar los per#iles de usuario
-ASP.E! no carga automticamente los per#iles de usuario..
El uso del almac,n del e$uipo -$ue se adopta en este artculo. es ms #cil de
desarrollar por$ue no re$uiere la administracin de per#iles de usuario. Sin
embargo% a menos $ue se utilice un parmetro de entropa adicional% la seguridad
es menor por$ue cual$uier usuario del e$uipo puede desci#rar los datos. -El
5
parmetro de entropa es un "alor aleatorio dise6ado para 'acer ms di#cil la
posibilidad de desci#rar el secreto.. El problema de utilizar un parmetro de
entropa adicional es $ue debe almacenarse de #orma segura en la aplicacin% lo
$ue presenta otro problema de administracin de cla"es.
ota: si se utiliza DPAPI con el almac,n del e$uipo% la cadena ci#rada es
espec#ica de un e$uipo determinado y% por lo tanto% deben generarse los datos
ci#rados en todos los e$uipos. o copie los datos ci#rados entre los e$uipos de un
grupo o cl7ster de ser"idores.

Si desea "er un artculo relacionado en el $ue se muestra cmo utilizar DPAPI con
el almac,n del usuario en una aplicacin Web ASP.E! -mediante un componente
al $ue se da ser"icio en una aplicacin de Ser"icios Empresariales.% consulte
*Cmo+ 8tilizar DPAPI -almac,n del usuario. en ASP.E! con la aplicacin de
Ser"icios Empresariales* en la seccin (e#erencia de esta gua.
Requisitos
A continuacin se describen las recomendaciones de 'ard9are% so#t9are% in#raestructura
de red% conocimientos y Ser"ice Pac: $ue se necesitan.
Sistema operati"o 3icroso#t; Windo9s; <===
Sistema de desarrollo 3icroso#t >isual Studio; .E!

Para lle"ar a cabo los procedimientos de este artculo% tambi,n es necesario $ue tenga
conocimientos acerca de cmo crear aplicaciones Web ASP.E! con la 'erramienta de
desarrollo 3icroso#t >isual C?@.
Antes de traba)ar con este artculo% debe realizar los pasos $ue se describen en *Cmo+
Crear una biblioteca DPAPI* para crear la biblioteca de clases administradas DPAPI $ue
se utiliza en el cdigo incluido en este artculo.

Resumen
En este artculo se incluyen los siguientes pasos+
5. Crear una aplicacin Web de cliente de ASP.E!
<. Probar la aplicacin
A. 3odi#icar la aplicacin Web para leer una cadena de cone&in ci#rada en
Web.con#ig

#. Crear una aplicacin $e% de cliente de ASP.!"
En este procedimiento se crea una aplicacin Web de cliente de ASP.E! $ue llamar a
la biblioteca de clases DPAPI para ci#rar y desci#rar los datos almacenados en el arc'i"o
Web.con#ig.
Para crear una aplicacin $e% de cliente de ASP.!"
5. Inicie >isual Studio .E! y cree una nue"a aplicacin Web ASP.E! en C? con el
nombre DPAPIClient$e%.
<. Agregue una re#erencia al ensamblado DataProtector.dll $ue se cre
anteriormente en *Cmo+ Crear una biblioteca DPAPI*.
A. Abra WebBorm5.asp&.cs y agregue las siguientes instrucciones using al principio
del arc'i"o deba)o de las instrucciones using e&istentes.
<
using System.Text;
using DataProtection;
C. Agregue a WebBorm5.asp& los controles $ue se enumeran en la tabla 5.
!abla 5+ Controles de WebBorm5.asp&
!ipo de control !e&to Id.
Dotn Encrypt btnEncrypt
Dotn Decrypt btnDecrypt
Cuadro de te&to t&tData!oEncrypt
Cuadro de te&to t&tEncryptedData
Cuadro de te&to t&tDecryptedData
Eti$ueta lblError
Eti$ueta Data !o Encrypt
Eti$ueta Encrypted Data
Eti$ueta Decrypted Data

El #ormulario Web debe tener una apariencia similar al de la ilustracin 5.
{Insert fgure: PAPI!o"To#e$%orm.gi& '
Ilustracin 5
Formulario Web DPAPIClientWeb
E. 4aga doble clic en el botn !ncr&pt para crear un controlador de e"entos de clic
asociado.
DataProtector dp = new DataProtector( DataProtector.Store.USE_MACHINE_STORE );
try
{
byte[] dataToEncrypt = Encoding.ASCII.GetBytes(txtDataToEncrypt.Text);
// Not passing optional entropy in this example
// Could pass random value (stored by the application) for added security
// when using DPAPI with the machine store.
txtEncryptedData.Text =
Convert.ToBase64String(dp.Encrypt(dataToEncrypt,null));
}
A
catch(Exception ex)
{
lblError.ForeColor = Color.Red;
lblError.Text = "Exception.<br>" + ex.Message;
return;
}
lblError.Text = "";
F. >uel"a al #ormulario Web y 'aga doble clic en el botn Decr&pt. Agregue el
siguiente cdigo al controlador de e"entos accionable al 'acer clic.
DataProtector dp = new DataProtector(DataProtector.Store.USE_MACHINE_STORE);
try
{
byte[] dataToDecrypt = Convert.FromBase64String(txtEncryptedData.Text);
// Optional entropy parameter is null.
// If entropy was used within the Encrypt method, the same entropy parameter
// must be supplied here
txtDecryptedData.Text =
Encoding.ASCII.GetString(dp.Decrypt(dataToDecrypt,null));
}
catch(Exception ex)
{
lblError.ForeColor = Color.Red;
lblError.Text = "Exception.<br>" + ex.Message;
return;
}
lblError.Text = "";
G. En el men7 'enerar% 'aga clic en 'enerar solucin.

(. Pro%ar la aplicacin
En este procedimiento se prueba la aplicacin Web para con#irmar $ue los datos se
ci#ran y desci#ran correctamente.
Para pro%ar la aplicacin
5. Presione Ctrl)*+ para e)ecutar la aplicacin Web.
<. Escriba una cadena en el cuadro de te&to Data to !ncr&pt -Datos $ue se ci#rarn.
y 'aga clic en !ncr&pt -Ci#rar..
Con#irme $ue los datos ci#rados -en #ormato codi#icado con DaseFC. se muestran
en el cuadro de te&to !ncr&pted Data -Datos ci#rados..
A. 4aga clic en el botn Decr&pt -Desci#rar..
Con#irme $ue los datos ci#rados se 'an desci#rado correctamente y se muestran
en el cuadro de te&to Decr&pted Data -Datos desci#rados..

C
,. -odi.icar la aplicacin $e% para leer una cadena de
cone/in ci.rada en $e%.con.i0
En este procedimiento se toma una cadena de cone&in de base de datos ci#rada y se
coloca el te&to ci#rado en el arc'i"o Web.con#ig de la aplicacin dentro de un elemento
HappSettin0sI. Despu,s% se agregar cdigo para leer la cadena en el arc'i"o de
con#iguracin y desci#rarla.
Para modi.icar la aplicacin $e% para leer una cadena de cone/in ci.rada en
$e%.con.i0
5. >uel"a a >isual Studio .E! y muestre el arc'i"o WebBorm5.asp& en el modo del
dise6ador.
<. Agregue otro botn al #ormulario. Con#igure la propiedad "e/t en Decr&pt strin0
.rom con.i0 .ile -Desci#rar cadena de arc'i"o de con#iguracin. y la propiedad ID
en %tnDecr&ptCon.i0.
A. 4aga doble clic en el botn para crear un controlador de e"entos accionable al
'acer clic.
C. Al principio del arc'i"o% agregue la siguiente instruccin usin0 deba)o de las
instrucciones usin0 e&istentes.
using System.Configuration;
E. >uel"a al controlador de e"entos %tnDecr&ptCon.i01Clic2 y agregue el siguiente
cdigo para recuperar una cadena de cone&in de base de datos en la seccin
HappSettin0sI del arc'i"o Web.con#ig.
DataProtector dp = new DataProtector(DataProtector.Store.USE_MACHINE_STORE);
try
{
string appSettingValue =
ConfigurationSettings.AppSettings["connectionString"];
byte[] dataToDecrypt = Convert.FromBase64String(appSettingValue);
string connStr = Encoding.ASCII.GetString(
dp.Decrypt(dataToDecrypt,null));
txtDecryptedData.Text = connStr;
}
catch(Exception ex)
{
lblError.ForeColor = Color.Red;
lblError.Text = "Exception.<br>" + ex.Message;
return;
}
lblError.Text = "";
E. En el men7 'enerar% 'aga clic en 'enerar solucin para "ol"er a compilar los
proyectos.
F. 4aga clic con el botn secundario del mouse -ratn. en $e%*orm#.asp/ y% a
continuacin% 'aga clic en 3er en el e/plorador.
G. En el campo Data to !ncr&pt% escriba una cadena de cone&in de base de datos
como la $ue se indica a continuacin.
E
server=(local);Integrated Security=SSPI; database=Northwind
J. 4aga clic en el botn !ncr&pt.
K. Seleccione el te&to ci#rado y cpielo en el portapapeles.
5=. Cambie a >isual Studio .E!% abra Web.con#ig y agregue el siguiente elemento
HappSettin0sI #uera del elemento Hs&stem.4e%I. Asigne la cadena de cone&in
ci#rada $ue se encuentra en el portapapeles al atributo 5alue.
<appSettings>
<add key="connectionString" value="encrypted connection string" />
</appSettings>
55. Luarde Web.con#ig.
5<. 4aga clic en el botn Decr&pt strin0 .rom con.i0 .ile y con#irme $ue la cadena de
cone&in de base de datos ci#rada se lee correctamente en el arc'i"o Web.con#ig
y $ue la cadena de cone&in desci#rada se muestra correctamente en el campo
Decr&pted data.

Re.erencias
Para obtener ms in#ormacin% consulte los siguientes artculos relacionados en la
seccin (e#erencia de esta gua+
M *Cmo+ Crear una biblioteca DPAPI* en la seccin (e#erencia de esta gua
M *Cmo+ 8tilizar DPAPI -almac,n del usuario. en ASP.E! con la aplicacin de
Ser"icios Empresariales* en la seccin (e#erencia de esta gua


F

También podría gustarte