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;
}
}
}

Aumenta la seguridad de tus servidores web con UrlScan 3.1

UrlScan es una herramienta de seguridad que restringe los tipos de solicitudes HTTP que procesará nuestro servidor IIS. Al bloquear solicitudes HTTP específicas, la herramienta de seguridad URLScan 3.1 ayuda a prevenir que peticiones potencialmente perjudiciales lleguen a las aplicaciones en el servidor. UrlScan es compatible con IIS 5.1, IIS 6.0 e IIS 7.0 en Windows Vista y Windows Server 2008.

UrlScan realiza un filtrado de las solicitudes sobre la base de reglas que son establecidas por el administrador. El filtrado de peticiones ayuda a proteger el servidor, asegurando que sólo se procesan las solicitudes válidas.

Mitigar los ataques de inyección SQL

UrlScan se puede configurar para filtrar los valores del querystring y otras cabeceras HTTP para mitigar los ataques de inyección SQL.

Para descargar este complemento  puede ir a este enlace de la pagina oficial del IIS.

Reciente vulnerabilidad en ASP.NET y como evitarla (por ahora)

Como algunos sabran recientemente fue descubierta una vulnerabilidad en ASP.NET que podría permitir que un atacante descargara archivos de nuestro servidor que puedan tener información delicada como el web.config,  a grandes rasgos la vulnerabilidad se produce cuando un atacante empieza a enviar texto cifrado a nuestro servidor y comienza  a recolectar información sobre los distintos mensajes de error que devuelve el servidor lo cual da pistas de como el texto enviado es descifrado y finalmente después de enviar las suficientes peticiones al servidor el atacante podría determinar como desencriptar los mensajes del servidor. Este fenómeno en criptografía se conoce como cryptographic oracles ya que el sistema devuelve respuestas parciales a peticiones que se le envían.

Aun la vulnerabilidad no se encuentra resuelta pero hay una manera muy sencilla de ser vulnerables y es habilitar en nuestro web.config el custom error y devolver siempre la misma pagina de error para todos los errores de manera de que nuestro servidor no de pistas al atacante enviando distintos errores para distintos textos cifrados enviados.
Seguir leyendo

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

Como capturar y manejar mis errores de AJAX

ajax1

Si hemos realizados aplicaciones Asp.Net utilizando Ajax nos habrá pasado que los llamadas asincrónicas a métodos puede ser que produzcan algún error y este error se refleje a en la internas de usuario como un error de javascript, esto por supuesto presupone un riesgo de seguridad ya que estos errores podría estar mostrando información relevante de nuestra aplicación a terceros mal intencionados, de aquí la importancia de poder manejar estos errores y convertirlos en errores mas amigables para el usuario y lo mas importante ocultar información referente al funcionamiento de nuestra aplicación.
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