Como validar si un usuario de SharePoint pertenece a un grupo del directorio activo que está dentro de un grupo de SharePoint.


En algunos casos tendremos la necesidad de validar si un usuario que accede a una aplicación de SharePoint pertenece o no a un perfil en específico, esta tarea se vuelve más compleja cuando no agregamos a los perfiles de SharePoint usuarios directamente sino grupos del directorio activo lo cual es bastante común, pues con el método que dejo más abajo se puede validar si un usuario tiene un perfil en concreto ya sea que este otorgado directamente al incluirlo en un perfil en la aplicación o que pertenezca a un grupo de directorio activo que está incluido en algún perfil.


public bool UsuarioTienePermisos(string url, string nombregrupo, string NombreUsuario)
{
bool reachedMax = false;
bool TienePermisos= false;
SPSecurity.RunWithElevatedPrivileges(delegate
{
try
{
using (SPSite site = new SPSite(url))
{
using (SPWeb web = site.OpenWeb())
{
SPGroup grupo = site.RootWeb.SiteGroups[NombreUsuario];
foreach (SPUser usuario in grupo.Users)
{
if (!usuario.IsDomainGroup)
{
if (user.LoginName.ToUpper().Equals(NombreUsuario))
{

TienePermisos = true;
return;
}
}
else
{
if (IsUserInADGroup(web, usuario.LoginName,
NombreUsuario, out reachedMax))
{ TienePermisos = true;
return;
}
}
}
}
}
}
catch (Exception ex)
{
}
});
return TienePermisos ;
} private static bool ValidarUsuarioDirectoiroActivo(SPWeb web, string nombregrupo,
string nombreUsuario, out bool reachedMax)
{
SPPrincipalInfo[] principals =
SPUtility.GetPrincipalsInGroup(web, nombregrupo, 500, out reachedMax);

if (principals == null || principals.Length == 0)
{
return false;
}
else
{
foreach (SPPrincipalInfo principal in principals)
{

if (!principal.IsSharePointGroup && principal.PrincipalType
!= SPPrincipalType.SecurityGroup &&
principal.DisplayName.ToUpper() != “SYSTEM ACCOUNT”)
{
if (principal.LoginName.ToUpper() == nombreUsuario.ToUpper())
{
return true;
}
}
else if (principal.PrincipalType == SPPrincipalType.SecurityGroup)
{
if (ValidarUsuarioDirectoiroActivo(web, principal.LoginName, nombreUsuario, out reachedMax))
{
return true;
}
}
}
return false;
}
}
}

Cifrado de datos con SQL Server 2005

En SQL Server 2005 tenemos  4 alternativas para llevar a cabo  el cifrado de datos y son las siguientes:
Passphrase
En este método solo necesitamos pasar una contraseña que nos servirá para cifrar y descifrar los datos, para esto los comandos que se usaran serán EncryptByPassPhrase y DecryptByPassPhrase.

Seguir leyendo

Vulnerabilidades, ataques y contra medidas

web

Estas es una lista de posibles  vulnerabilidades  que pueden exponer nuestras aplicaciones web según la MSDN.

Vulnerabilidades en aplicaciones Web


Input/Data Validation

  • Using non-validated input in the Hypertext Markup Language (HTML) output stream
  • Using non-validated input used to generate SQL queries
    Relying on client-side validation
  • Using input file names, URLs, or user names for security decisions
  • Using application-only filters for malicious input
  • Looking for known bad patterns of input
  • Trusting data read from databases, file shares, and other network resources
  • Failing to validate input from all sources including cookies, query string parameters, HTTP headers, databases, and network resources

Seguir leyendo

FxCop: analiza el código y diseño de tu aplicación

 

Microsoft a sacado una herramienta llamada FxCop la cual te permite realizar un análisis de tus assemblies en brusquedad de deficiencias en cuanto al diseño y programación, FxCop se basa en un conjunto de reglas (Rules) de las conocidas Design Guidelines, la herramienta es muy útil y muy fácil de usar, así que se las recomiendo.

 

Descarga:http://www.microsoft.com/downloads/details.aspx?FamilyID=3389f7e4-0e55-4a4d-bc74-4aeabb17997b&DisplayLang=en

 

 

 

ASP.NET 2.0 Security Practices

Aquí les dejo un enlace a msdn donde podrán encontrar mucho contenido relacionado con seguridad en Asp.NetEn la pagina podrán encontrar información acerca de: What’s New in 2.0
Index of Practices
Auditing and Logging
Authentication
Authorization
Code Access Security
Configuration
Data Access
Exception Management
Impersonation and Delegation
Input and Data Validation
Secure Communication
Sensitive Data
Companion Guidance
Additional Resources

Patterns and Practices home

Enlace: http://msdn2.microsoft.com/en-us/library/ms998372.aspx