clase xv
TRANSCRIPT
Clase XVClase XV•[nombre instructor][nombre instructor]
•[fecha][fecha]
AgendaAgenda Seguridad
Políticas Seguridad de código Seguridad en ASP.NET Nuevas Características de Seguridad de
ASP.NET 2.0 Membresía Modelo de Proveedores Controles de Login
AgendaAgenda Seguridad
Políticas Seguridad de código Seguridad en ASP.NET Nuevas Características de Seguridad de
ASP.NET 2.0 Membresía Modelo de Proveedores Controles de Login
Políticas Políticas
Descripción del uso de políticas
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Qué es evidenciar?Qué es evidenciar?
Evidenciar consiste en la información a cerca de la entidad y origen de un assembly
La seguridad del Framework .NET es un sistema que otorga permisos basados en la fuerza de evidencia
Assembly Strong name Criptografico hashFirma Authenticode
Nombre simple de assemblyCode location (URL) Zona de origen
Formas de evidenciaFormas de evidencia
Fuerte DébilFuerza relativa
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Qué es Políticas de Seguridad?Qué es Políticas de Seguridad? Políticas de seguridad de código de acceso
controlan los permisos del código para acceder a los recursos
La cantidad de acceso esta basado en la identidad del código y el origen
La identidad del código y el origen es establecido por la evidencia
Una política de seguridad hace juego con un tipo específico de evidencia para un conjunto de permisos Nothing Execution Internet LocalIntranet Everything FullTrust Custom-defined
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Qué es nivel de Políticas de Qué es nivel de Políticas de seguridad?seguridad?
Políticas que pueden ser aplicadas a diferentes niveles para controlar acceso a recursos :
•Enterprise•Machine•User•Application domain
Qué es una Demanda de Qué es una Demanda de Permisos?Permisos? 1. Un assembly pide acceso a un
método en un assembly
2. El assembly pasa la petición a un assembly del .NET Framework
3. El sistema de seguridad demanda permisos arriba de la pila
4. El sistema de seguridad concede el acceso o lanza una excepción
Security system
YourAssemblyYourAssembly
SomeAssemblySomeAssembly
.NET Framework Assembly
.NET Framework Assembly
Call to WriteFile
Call to WriteFile
Grant: Execute
Grant: ReadFileGrant: ReadFile
Grant: ReadFile
Permission Demand
Security exception Access denied
Security exception Access deniedGrant access?Grant access?
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Qué es afirmación de Qué es afirmación de Permisos?Permisos? El método Assert
reduce el alcance de la demanda de permisos
Usa esto para asociar una aplicación .NET Framework con código no administrado
Cuidado: El uso de Assert puede crear una vulnerabilidad en la seguridad
Security system
Call to NUMBER_Of_PROCESSORS
SomeAssemblySomeAssemblyGrant: Execute
.NET Framework Assembly.NET Framework AssemblyGrant: read the system variable:
NUMBER_OF_PROCESSORSGrant: read the system variable:
NUMBER_OF_PROCESSORS
FinanceCalculatorFinanceCalculatorAssert: Read system variable:NUMBER_OF_PROCESSORS
Call to NUMBER_Of_PROCESSORS Permission Demand
Access grantedAccess grantedGrant access?Grant access?
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Otros Tipos de Chequeo de Otros Tipos de Chequeo de seguridadseguridad
Para realizar esta acción: Use este método:
Prevenir y permitir al código de recibir permisos
Deny
PermitOnly
Desactivar llamadas dentro de la pila
RevertAssert
RevertDeny
RevertPermitOnly
RevertAllComparar dos permisos en la misma clase IsSubsetOf
Combinar e intersecar permisos
Unión
Intersect
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Cómo se demanda un permiso Cómo se demanda un permiso imperativo?imperativo?
Un puesto de demanda a un requerimiento de permiso específico de un llamador
Para demandar un permiso imperativo:1. Crear una nueva instancia del objeto
permiso2. Poner las propiedades sobre el objeto
permiso3. Llamar al método de demanda de objeto
en el bloque Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Como se “Sostiene” (Assert) un Como se “Sostiene” (Assert) un permiso imperativopermiso imperativo Para sostener un permiso imperativo:
1. Crear una instancia del objeto permission
2. Llamar al método Assert sobre éste
Cómo usar Permisos Cómo usar Permisos Declarativos?Declarativos? Usar atributos para poner permisos
declarativos Assert Demand Deny Permit
Evitar añadir atributos de Demand y atributos de Assert para el mismo método
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Qué es un Link Demand?Qué es un Link Demand?
Un link demand especifica que el conjunto de permisos que directamente llama deben tener para llamar a su código
Un link demand es chequeado durante la compilación JIT del llamador
Una excepción resulta si el llamador no tiene los suficientes permisos
Es usado especialmente un link demand que requiere permisos de identidad Permite que cree un assembly privado que
pueda ser llamado por un assembly que tenga la misma publicación
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Qué es herencia de Demanda?Qué es herencia de Demanda?
Una herencia de demanda pude ser puesta en un una clase o método
A este nivel:
Una herencia de demanda requiere que su código tenga permisos
específicos para:
Class Heredar de la clase
Method Sobreescribir el método
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Qué es la petición de permisos?Qué es la petición de permisos?
La petición de permisos de Assembly son examinados en tiempo de carga por el .NET Framework
Tipos de petición de permisos de Assembly Permisos Mínimos (RequestMinimum)
El conjunto mínimo de permisos que el código necesita para correr
Permisos Opcionales (RequestOptional) Permisos que el código puede usar pero que
puede correr efectivamente son ellos Permisos Rechazados
(RequestRefused) Permisos que el código nunca concederá,
incluso si la política de seguridad permite concederlos
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
LaboratorioLaboratorio•Seguridad de acceso del códigoSeguridad de acceso del código
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Validando LoginsValidando Logins
if (Membership.ValidateUser (UserName.Text, Password.Text)) RedirectFromLoginPage (UserName.Text, RememberMe.Checked);
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
ProveedoresProveedores
Nuevo modelo para almacenar y manejar estados Los almacenamientos se hacen
adaptables a diferentes medios Usados por muchos servicios
ASP.NET claves Servicio de Membresía Servicio de Administración de Roles y
más Los proveedores preconstruidos
hacen que los estados de almacenamiento ASP.NET sean flexibles
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
El modelo de ProveedoresEl modelo de Proveedores
APIs de Membresia
Data de Membresía
AccessOtros
almacenamientos de datos
ControlesLoginLogin LoginStatusLoginStatus LoginViewLoginView
AccessMembershipProviderAccessMembershipProvider Otros proveedoresOtros proveedores
Proveedores de Membresía
MembershipMembership MembershipUserMembershipUser
SqlMembershipProviderSqlMembershipProvider
SQL Server
Otros controles de Login
Otros controles de Login
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
DemoDemo•Configurando un Membership Provider
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
DemoDemo•Configurando Roles Management
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
Login ControlsLogin Controls
Controles de Servidor No escritura de código, e.g. Login UI Integrado con las características de
Seguridad<asp:login /> <asp:loginname /><asp:loginstatus /><asp:loginview /><asp:passwordrecovery /><asp:createuserwizard /> <asp:changepassword /> S
egu
rida
d e
n .N
ET
Se
guri
dad
en
.NE
T
<asp:CreateUserWizard /><asp:CreateUserWizard /> Control Paso a Paso para crear un
usuario : Podemos agregar pasos (e.g. address) Podemos modificar la plantilla de los
pasos existentes
Integración a características de seguridad: Integración con Membresía
(Membership) NOTA: Puede crear un acceso a BD si el
default membership es cambiado. Tips
Soporte para fácil reorganización de pasos
Hereda de Wizard
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
<asp:Login /><asp:Login />
IU Para Iniciar Sesión : Soporte para Auto Formato Tranformación a plantilla
Integración: Forms Authentication para validad
usuario Integración conMembership
Propiedades de presentación Configurable Presentación, e.g. back color, fore color Behavior, e.g. redireccionar a urls
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
<asp:LoginName /><asp:LoginName />
Presenta el nombre del usuario Actual String con Formato, e.g. ‘Welcome,
{0}!” Otras Presentaciones
User.Identity.Name<asp:LoginStatus /><asp:LoginStatus /> Presenta el Estado del Usuario
No autenticado: ‘Login’ autenticado: ‘Logout’ Basado en imagen o texto
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
<asp:LoginView /><asp:LoginView />
La presentación varía por: Anonymous Usuario Autenticados Role Membership – Segmentos de
página por rol
Plantillas y Roles <loggedintemplate /> <anonymoustemplate /> <rolegroups />
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
<asp:ChangePassword /><asp:ChangePassword />
IU Para cambiar Password: Convertir a Plantilla
Integración: Integración con Membership Modelo de presentación dual – uno para
usuarios autenticados y otro para usuarios no autenticados
Propiedades de presentación configurables Presentación, e.g. back color, fore colorS
egu
rida
d e
n .N
ET
Se
guri
dad
en
.NE
T
<asp:PasswordRecovery /><asp:PasswordRecovery />
Recuperar Password Soporta autoformato Conversión a Plantilla
Integración: Usa el proveedor de Membresía por
fedecto Reglas de recuperación de Membership
Propiedades de presentación configurable Presentación, e.g. back color, fore color Configuración, e.g. redireccionar a urls
Se
guri
dad
en
.NE
TS
egu
rida
d e
n .N
ET
LaboratorioLaboratorio•Seguridad en ASP.NET 2.0Seguridad en ASP.NET 2.0
RecursosRecursos
Dirección de guía de Seguridad para ASP.NET 2.0: http://msdn.microsoft.com/library/default.asp?
url=/library/en-us/dnpag2/html/PAGPractices0001.asp
Laboratorios de MSDN: http://lab.msdn.microsoft.com/
Más Recursos ASP.NET http://beta.asp.net
Recursos y Noticias: www.programar.net www.willydev.net www.developersec.net
ExámenExámen
Recuperatorio de exámenesRecuperatorio de exámenes