View
9
Download
4
Category
Preview:
Citation preview
ImplementaciónImplementación dede seguridadseguridad enen laslas aplicacionesaplicaciones concon MicrosoftMicrosoft .NET.NET FrameworkFrameworkNombreNombrePuestoPuestoCompañíaCompañía
ContenidoContenido
CaracterísticasCaracterísticas dede seguridadseguridad dede .NET.NET FrameworkFramework
Seguridad del acceso a códigoSeguridad del acceso a código
Seguridad basada en funcionesSeguridad basada en funciones
CriptografíaCriptografía
Seguridad de las aplicaciones Web de Seguridad de las aplicaciones Web de ASP .NETASP .NET
Seguridad de los servicios Web de ASP.NETSeguridad de los servicios Web de ASP.NET
RequisitosRequisitos previosprevios parapara lala sesiónsesión
ExperienciaExperiencia enen desarrollodesarrollo concon MicrosoftMicrosoft VisualVisual Basic®,Basic®, MicrosoftMicrosoft VisualVisual C++®C++® oo C#C#
Experiencia en la creación de aplicaciones Experiencia en la creación de aplicaciones Web o para Microsoft Windows® Web o para Microsoft Windows® mediante .NET Frameworkmediante .NET Framework
NivelNivel 200200
OrdenOrden deldel díadía
CaracterísticasCaracterísticas dede seguridadseguridad dede .NET.NET FrameworkFramework
Seguridad del acceso a códigoSeguridad del acceso a código
Seguridad basada en funcionesSeguridad basada en funciones
CriptografíaCriptografía
Seguridad de las aplicaciones Web de Seguridad de las aplicaciones Web de ASP .NETASP .NET
Seguridad de los servicios Web de ASP.NETSeguridad de los servicios Web de ASP.NET
SeguridadSeguridad dede lala ejecuciónejecución controladacontrolada dede .NET.NET
CaracterísticasCaracterísticas dede seguridadseguridad dede .NET.NET FrameworkFramework
Ayuda a desarrollar aplicaciones segurasAyuda a desarrollar aplicaciones seguras
Incluye varios componentes, por ejemplo:Incluye varios componentes, por ejemplo:Comprobador de tiposComprobador de tipos
Administrador de excepcionesAdministrador de excepciones
Motor de seguridadMotor de seguridad
Complementa la seguridad de WindowsComplementa la seguridad de Windows
UnUn sistemasistema concon comprobacióncomprobación dede tipostipos
ElEl códigocódigo concon comprobacióncomprobación dede tipos:tipos:Impide la saturación de los búferesImpide la saturación de los búferes
Limita el acceso a las ubicaciones de Limita el acceso a las ubicaciones de memoria autorizadasmemoria autorizadas
Permite que varios ensamblados se ejecuten Permite que varios ensamblados se ejecuten en el mismo procesoen el mismo proceso
Los dominios de aplicación proporcionan:Los dominios de aplicación proporcionan:Mayor rendimientoMayor rendimiento
Aumento de la seguridad del códigoAumento de la seguridad del código
ProtecciónProtección frentefrente al al desbordamientodesbordamiento dede búferesbúferes
LaLa comprobacióncomprobación dede tipostipos impideimpide queque sese sobrescribasobrescriba arbitrariamentearbitrariamente lala memoriamemoriaLos objetos Los objetos System.StringSystem.String de .NET son de .NET son inalterablesinalterables
La clase La clase System.Text.StringBuilderSystem.Text.StringBuilder de .NET comprueba los límites de los de .NET comprueba los límites de los búferesbúferes
void CopyString (string src){
cadenaDest = origen;}
CapturaCaptura dede erroreserrores aritméticosaritméticosLaLa capturacaptura dede erroreserrores aritméticosaritméticos sese consigue mediante:consigue mediante:
La palabra clave La palabra clave checkedchecked
Configuración del proyectoConfiguración del proyectobyte b=0;while (true){
Console.WriteLine (b);
checked{
b++;}
}
DemostraciónDemostración 11 SeguridadSeguridad dede loslos tipostipos
InvestigaciónInvestigación dede lala seguridadseguridad dede loslos tipostipos dede .NET.NET
UsoUso dede lala palabrapalabra claveclave checkedchecked
EnsambladosEnsamblados concon nombresnombres segurossegurosLosLos nombresnombres segurosseguros sonson
Identificadores únicos (que contienen una clave Identificadores únicos (que contienen una clave pública)pública)
Se utilizan para firmar digitalmente los Se utilizan para firmar digitalmente los ensambladosensamblados
Ensamblados con nombres segurosEnsamblados con nombres segurosImpiden la modificaciónImpiden la modificación
Confirman la identidad del publicadorConfirman la identidad del publicador del ensamblado
Permite la coexistencia de componentes Permite la coexistencia de componentes que se denominan igual pero pertenecen que se denominan igual pero pertenecen a versiones diferentesa versiones diferentes
sn –k MiClaveCompleta.snk
AlmacenamientoAlmacenamiento aisladoaislado
ProporcionaProporciona unun sistemasistema dede archivosarchivos virtualvirtual
Permite el uso de cuotasPermite el uso de cuotas
Implementa el aislamiento del Implementa el aislamiento del sistema de archivos en función sistema de archivos en función de:de:
La identidad de la aplicaciónLa identidad de la aplicación
La identidad del usuarioLa identidad del usuarioIsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForAssembly();
OrdenOrden deldel díadía
CaracterísticasCaracterísticas dede seguridadseguridad dede .NET.NET FrameworkFramework
Seguridad del acceso a códigoSeguridad del acceso a código
Seguridad basada en funcionesSeguridad basada en funciones
CriptografíaCriptografía
Seguridad de las aplicaciones Web de Seguridad de las aplicaciones Web de ASP .NETASP .NET
Seguridad de los servicios Web de ASP.NETSeguridad de los servicios Web de ASP.NET
SeguridadSeguridad basadabasada enen evidenciasevidencias
EvidenciaEvidenciaSe valora cuando se carga un ensambladoSe valora cuando se carga un ensamblado
Se usa para determinar los permisos del Se usa para determinar los permisos del ensambladoensamblado
Puede incluir la siguiente información del Puede incluir la siguiente información del ensamblado:ensamblado:
Información del nombre seguroInformación del nombre seguro
Dirección URLDirección URL
ZonaZona
Firma AuthenticodeFirma Authenticode
DirectivasDirectivas dede seguridadseguridadEntidad de seguridad
Descripción
DirectivaDirectiva
La configuran los administradoresSe aplica en tiempo de ejecuciónSimplifica la administraciónContiene permisosContiene grupos de código
GrupoGrupo dede códigocódigo
Asocia componentes similaresSe basa en evidenciasSe vincula a conjuntos de permisos
ConjuntoConjunto dede permisospermisos
Es un conjunto de los permisos concedidos
Flujo de la comprobación Flujo de la comprobación de la seguridadde la seguridad
Pila de llamadas
Sistema de seguridad
Su ensambladoSu ensamblado
Un ensambladoUn ensamblado
Ensamblado de .NET Framework
Ensamblado de .NET Framework
Llamada a ReadFile
Llamada a ReadFile
Conceder: Execute
1. Un ensamblado solicita acceso a un método de su ensamblado
2. Su ensamblado pasa la solicitud a un ensamblado de .NET Framework
3. El sistema de seguridad garantiza que todas las funciones de la pila que realizan llamadas tengan los permisos requeridos
4. El sistema de seguridad concede acceso o emite una excepción
Conceder: ReadFileConceder: ReadFile
Conceder: ReadFile
Solicitud de permiso
Excepción de seguridad Acceso denegado
Excepción de seguridad Acceso denegado¿Se concede acceso?¿Se concede acceso?
TiposTipos dede comprobacionescomprobaciones dede seguridadseguridad
ComprobacionesComprobaciones dede seguridadseguridad imperativasimperativasCrear objetos Crear objetos PermissionPermission
Llamar a métodos Llamar a métodos PermissionPermission
Comprobaciones de seguridad declarativasComprobaciones de seguridad declarativasUsar atributos Usar atributos PermissionPermission
Se aplica a métodos o clasesSe aplica a métodos o clases
Se omiten las comprobaciones de seguridadSe omiten las comprobaciones de seguridadSe utiliza el método Se utiliza el método AssertAssert
Se impide el recorrido de la pilaSe impide el recorrido de la pila
SolicitudesSolicitudes dede permisopermiso
LosLos desarrolladoresdesarrolladores laslas usanusan parapara definirdefinir loslos permisospermisos requeridosrequeridos
Se implementan mediante atributosSe implementan mediante atributos
Impiden que un ensamblado se cargue Impiden que un ensamblado se cargue cuando cuando los permisos mínimos no están disponibleslos permisos mínimos no están disponibles//Sólo me ejecutaré si puedo llamar a código no
controlado[assembly:SecurityPermission (SecurityAction.RequestMinimum, UnmanagedCode=true)]
DemostraciónDemostración 22 SeguridadSeguridad deldel accesoacceso aa códigocódigo
UsoUso dede lala herramientaherramienta ConfiguraciónConfiguración dede .NET.NET FrameworkFramework
RealizaciónRealización dede comprobacionescomprobacionesdede seguridadseguridad SolicitudSolicitud dede permisospermisos
AplicacionesAplicaciones dede confianzaconfianza parcialparcial
AntesAntes dede .NET.NET FrameworkFramework 1.1,1.1, todastodas laslas aplicacionesaplicaciones WebWeb sese ejecutabanejecutaban concon confianzaconfianza totaltotal
.NET 1.1 proporciona niveles de confianza .NET 1.1 proporciona niveles de confianza parcial:parcial:
TotalTotal
AltaAlta
MediaMedia
BajaBaja
MínimaMínima
CajónCajón dede arenaarena (sandboxing)(sandboxing) de códigode código privilegiadoprivilegiado
Aplicación Web con confianza
parcial
Ensamblado contenedor
Recurso protegido
Código de cajón de arena (sandboxing)
<nivel de confianza_“Media”
Uriorigin_--/>
Permisos exigidos e impuestos
Se agrega el atributo AllowPartiallyTrustedCallers
El ensamblado se instala en la caché global de ensamblados
Acceso a los recursos
OrdenOrden deldel díadía
CaracterísticasCaracterísticas dede seguridadseguridad dede .NET.NET FrameworkFramework
Seguridad del acceso a códigoSeguridad del acceso a código
Seguridad basada en funcionesSeguridad basada en funciones
CriptografíaCriptografía
Seguridad de las aplicaciones Web de Seguridad de las aplicaciones Web de ASP .NETASP .NET
Seguridad de los servicios Web de ASP.NETSeguridad de los servicios Web de ASP.NET
AutenticaciónAutenticación yy autorizaciónautorización
LaLa autenticaciónautenticación pregunta:pregunta:“¿Quién“¿Quién eses usted?”usted?”““¿Tengo¿Tengo lala certezacerteza dede queque ustedusted eses quienquien dicedice ser?”ser?”
La autorización pregunta:La autorización pregunta:“¿Se le permite … ?”“¿Se le permite … ?”
IdentidadesIdentidades yy principalesprincipales
UnaUna identidadidentidad contienecontiene informacióninformación sobresobre unun usuario,usuario, comocomo susu nombrenombre dede inicioinicio dede sesiónsesión
Un principal contiene información de la Un principal contiene información de la función sobre un usuario o equipofunción sobre un usuario o equipo
.NET Framework proporciona:.NET Framework proporciona:Los objetos WindowsIdentityWindowsIdentity y y WindowsPrincipalWindowsPrincipalLos objetos GenericIdentityGenericIdentity y y GenericPrincipalGenericPrincipal
CreaciónCreación dede identidadesidentidades y principalesy principales dede WindowsWindows
UseUse loslos objetosobjetos WindowsIdentityWindowsIdentity
yy WindowsPrincipalWindowsPrincipal para:para:
Validación únicaValidación única
Validación repetidaValidación repetida
WindowsIdentity miIdent = WindowsIdentity.GetCurrent();WindowsPrincipal miPrin = new WindowsPrincipal(miIdent);
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);WindowsPrincipal miPrin = System.Threading.Thread.CurrentPrincipal;
CreaciónCreación dede identidadesidentidades y principalesy principales genéricosgenéricos
CreeCree unun objetoobjeto GenericIdentityGenericIdentity yy unun objetoobjeto GenericPrincipalGenericPrincipal
Adjunte el objeto Adjunte el objeto GenericPrincipalGenericPrincipal al subproceso actual al subproceso actual
GenericIdentity miIdent = new GenericIdentity("User1");string[] funciones = {"Administrador", "Cajero"};GenericPrincipal miPrin = new GenericPrincipal(miIdent, funciones);
System.Threading.Thread.CurrentPrincipal = miPrin;
RealizaciónRealización dede comprobacionescomprobaciones dede seguridadseguridad
UtiliceUtilice loslos integrantesintegrantes IdentityIdentity yy PrincipalPrincipal enen elel códigocódigo
Por ejemplo, si utiliza la propiedad Por ejemplo, si utiliza la propiedad NameName del del objeto Identity para comprobar el nombre de inicio objeto Identity para comprobar el nombre de inicio de inicio de sesión del usuariode inicio de sesión del usuario
Por ejemplo, si utiliza el método Por ejemplo, si utiliza el método IsInRoleIsInRole del del objeto Principal para comprobar la pertenencia de objeto Principal para comprobar la pertenencia de las funcioneslas funciones
if (String.Compare(miPrin.Identity.Name, "DOMAIN\\Fred", true)==0){ // Realizar alguna acción}
if (miPrin.IsInRole("BUILTIN\\Administrators")){ // Realizar alguna acción}
ComprobacionesComprobaciones dede seguridadseguridad imperativasimperativas yy declarativasdeclarativas
UtiliceUtilice permisospermisos parapara realizarrealizar comprobacionescomprobaciones de seguridadde seguridad basadasbasadas enen funcionesfunciones
Comprobaciones imperativasComprobaciones imperativas
PrincipalPermission permPrin = new PrincipalPermission("Cajero", “Administrador”, true);
try{ permPrin.Demand(); //¿Coincide lo anterior con el principal activo?}
[PrincipalPermission(SecurityAction.Demand, Role="Cajero", Authenticated=true)]
ComprobacionesComprobaciones declarativasdeclarativas
DemostraciónDemostración 33 SeguridadSeguridad basadabasada enen
funcionesfunciones
UsoUso dede seguridadseguridad basadabasada enen funcionesfuncionesdede WindowsWindows
UsoUso dede seguridadseguridad genéricagenérica basadabasadaenen funcionesfunciones
OrdenOrden deldel díadía
CaracterísticasCaracterísticas dede seguridadseguridad dede .NET.NET FrameworkFramework
Seguridad del acceso a códigoSeguridad del acceso a código
Seguridad basada en funcionesSeguridad basada en funciones
CriptografíaCriptografía
Seguridad de las aplicaciones Web de Seguridad de las aplicaciones Web de ASP .NETASP .NET
Seguridad de los servicios Web de ASP.NETSeguridad de los servicios Web de ASP.NET
IntroducciónIntroducción generalgeneral a laa la criptografíacriptografía
Término de criptografía
Descripción
CifradoCifrado simétricosimétrico Cifrar y descifrar datos con una clave secreta
CifradoCifrado asimétricoasimétrico Cifrar y descifrar datos con un par de claves pública y privada
HashHashSe asigna una cadena de datos larga a una cadena de datos corta de tamaño fijo
FirmaFirma digitaldigital Se calcula el valor hash de los datos y se cifra con una clave privada
.NET.NET FrameworkFramework proporcionaproporcionaclasesclases queque implementanimplementan estasestas
operacionesoperaciones
UsoUso dede algoritmosalgoritmos simétricossimétricos
ElijaElija unun algoritmoalgoritmo TripleDESCryptoServiceProviderTripleDESCryptoServiceProvider
RijndaelManagedRijndaelManaged
Genere una clave secretaGenere una clave secreta
Use la misma clave para cifrar y Use la misma clave para cifrar y descifrar datos:descifrar datos:
FileStreamFileStream
MemoryStreamMemoryStream
NetworkStreamNetworkStream
UsoUso dede algoritmosalgoritmos asimétricosasimétricos
ElijaElija unun algoritmoalgoritmo RSACryptoServiceProviderRSACryptoServiceProvider
DSACryptoServiceProviderDSACryptoServiceProvider
Genere un par de claves pública y Genere un par de claves pública y privadaprivada
Cifre o descifre los datosCifre o descifre los datos
FirmaFirma dede datosdatos yy comprobacióncomprobación dede firmasfirmas
Acción Pasos
FirmaFirma dede loslos datosdatosCalcular el valor hash de los datosCifrar el valor hash con una clave privada
ComprobaciónComprobación dede laslas firmasfirmas
Descifrar la firma mediante la clave pública del remitenteCalcular el valor hash de los datosComparar la firma cifrada con el valor hash
DemostraciónDemostración 44 CifradoCifrado enen .NET.NET FrameworkFramework
RealizaciónRealización deldel cifradocifrado simétricosimétricoFirmaFirma dede datosdatos
OrdenOrden deldel díadía
CaracterísticasCaracterísticas dede seguridadseguridad dede .NET.NET FrameworkFramework
Seguridad del acceso a códigoSeguridad del acceso a código
Seguridad basada en funcionesSeguridad basada en funciones
CriptografíaCriptografía
Seguridad de las aplicaciones Web de Seguridad de las aplicaciones Web de ASP .NETASP .NET
Seguridad de los servicios Web de ASP.NETSeguridad de los servicios Web de ASP.NET
TiposTipos dede autenticaciónautenticación dede ASP.NETASP.NET
Tipo de autenticación
Ventajas Desventajas
Windows
Usa la infraestructura de Windows existenteControla el acceso a información confidencial
No admite todos los tipos de clientes
FormulariosAdmite todos los tipos de clientes
Se basa en cookies
Microsoft Passport
Permite iniciar sesión una sola vez en muchos sitios Web de InternetPermite a los desarrolladores personalizar la apariencia de la página de registro
Se basa en cookiesRequiere el pago de una cuota
ConfiguraciónConfiguración dede lala autenticaciónautenticación basadabasada enen formulariosformulariosConfigureConfigure IISIIS parapara usarusar lala autenticaciónautenticación
anónimaanónima
Establezca la autenticación basada en Establezca la autenticación basada en formularios en Web.configformularios en Web.config
Configure la autorizaciónConfigure la autorización
Cree un formulario de inicio de sesiónCree un formulario de inicio de sesión<system.web>
<authentication mode="Forms"> <forms
loginUrl="WebForm1.aspx"/></authentication>
<authorization> <deny users="?"/></authorization>
</system.web>
MejorasMejoras dede lala autenticaciónautenticación basadabasada enen formulariosformularios
LosLos desarrolladoresdesarrolladores puedenpueden requerirrequerir cookiescookies segurosseguros
<authentication mode="Forms"><forms loginUrl="login.aspx"
protection="All" requireSSL="true"timeout="10"name="AppNameCookie" path="/FormsAuth" slidingExpiration="true"
</forms></authentication>
ElEl desarrolladordesarrollador puedepuede crearcrear clavesclaves específicasespecíficas dede lala aplicaciónaplicación
ControlesControles dede validaciónvalidación
ValidaciónValidación enen elel clientecliente
Proporciona información Proporciona información instantáneainstantánea
Reduce los ciclos de Reduce los ciclos de devolucióndevolución
Validación en el Validación en el servidorservidor
Repite toda la validación Repite toda la validación en el clienteen el cliente
Valida con los datos Valida con los datos almacenados si es necesarioalmacenados si es necesario
Mensaje de error
Cliente
Servidor
El usuario escribe los datos
¿Son válidos?
Se procesa la aplicación Web
Sí
No
¿Son válidos?
Sí
No
TiposTipos dede controlescontroles dede validaciónvalidación
DemostraciónDemostración 55 SeguridadSeguridad dede laslas aplicacionesaplicaciones
WebWeb dede ASP.NETASP.NET
ConfiguraciónConfiguración dede lala autenticaciónautenticación basadabasada enen formulariosformularios
UsoUso dede controlescontroles dede validaciónvalidación
OrdenOrden deldel díadía
CaracterísticasCaracterísticas dede seguridadseguridad dede .NET.NET FrameworkFramework
Seguridad del acceso a códigoSeguridad del acceso a código
Seguridad basada en funcionesSeguridad basada en funciones
CriptografíaCriptografía
Seguridad de las aplicaciones Web de Seguridad de las aplicaciones Web de ASP .NETASP .NET
Seguridad de los servicios Web de ASP.NETSeguridad de los servicios Web de ASP.NET
SeguridadSeguridad enen loslos mensajesmensajesLos mensajes XML portan información
de seguridad
Credenciales
Firmas digitales
Los mensajes se pueden cifrar
Cliente
Transporte
Servicio
TransporteCualquier transporte
XML
XML XML
XMLLa seguridad
es independiente del protocolo de transporte
WebWeb ServiceService EnhancementsEnhancements (WSE)(WSE)
Incluye:Incluye:Autenticación con encabezados SOAPAutenticación con encabezados SOAP
Cifrado de mensajesCifrado de mensajes
Firma de mensajesFirma de mensajes
Permite el enrutamiento de mensajesPermite el enrutamiento de mensajes
Admite archivos adjuntosAdmite archivos adjuntos
Se implementa en el ensamblado Se implementa en el ensamblado de Microsoft.Web.Services.dllde Microsoft.Web.Services.dll
DemostraciónDemostración 66 WebWeb ServicesServices EnhancementsEnhancements
(WSE)(WSE)
ImplementaciónImplementación dede seguridadseguridadparapara unun servicioservicio WebWeb
ResumenResumen dede lala sesiónsesión
CaracterísticasCaracterísticas dede seguridadseguridad dede .NET.NET FrameworkFramework
Seguridad del acceso a códigoSeguridad del acceso a código
Seguridad basada en funcionesSeguridad basada en funciones
CriptografíaCriptografía
Seguridad de las aplicaciones Web de Seguridad de las aplicaciones Web de ASP .NETASP .NET
Seguridad de los servicios Web de ASP.NETSeguridad de los servicios Web de ASP.NET
PasosPasos siguientessiguientes1.1. MantenerseMantenerse informadoinformado sobresobre lala seguridadseguridad
Suscribirse a boletines de seguridad:Suscribirse a boletines de seguridad:http://www.microsoft.com/http://www.microsoft.com/latam/technet/seguridad/boletines.asplatam/technet/seguridad/boletines.asp
Obtener las directrices de seguridad de Microsoft Obtener las directrices de seguridad de Microsoft más recientes:más recientes:http://www.microsoft.com/latam/seguridad/http://www.microsoft.com/latam/seguridad/
2.2. Obtener aprendizaje de seguridad adicionalObtener aprendizaje de seguridad adicional1.1. Buscar seminarios de aprendizaje en línea y Buscar seminarios de aprendizaje en línea y
presenciales:presenciales:http://www.microsoft.com/http://www.microsoft.com/latam/technet/evento/default.asplatam/technet/evento/default.asp
1.1. Buscar un CTEC local que ofrezca cursos prácticos:Buscar un CTEC local que ofrezca cursos prácticos:http://www.microsoft.com/http://www.microsoft.com/spain/formacion/default.aspspain/formacion/default.asp http://www.microsoft.com/http://www.microsoft.com/latam/entrenamiento/default.asplatam/entrenamiento/default.asp
ParaPara obtenerobtener másmás informacióninformación
SitioSitio dede seguridadseguridad dede MicrosoftMicrosoft (todos(todos loslos usuarios)usuarios)
httphttp://://www.microsoft.comwww.microsoft.com//latamlatam/seguridad/seguridad
Sitio de seguridad de MSDN (desarrolladores)Sitio de seguridad de MSDN (desarrolladores)http://msdn.microsoft.com/securityhttp://msdn.microsoft.com/security(este sitio está en inglés)(este sitio está en inglés)
Sitio de seguridad de TechNet (profesionales Sitio de seguridad de TechNet (profesionales de IT)de IT)
http://www.microsoft.com/http://www.microsoft.com/latam/technet/seguridad/default.asplatam/technet/seguridad/default.asphttp://www.microsoft.com/http://www.microsoft.com/spain/technet/seguridad/default.aspspain/technet/seguridad/default.asp
PreguntasPreguntas yy respuestasrespuestas
Recommended