Categories
.NET ASP.NET Seguridad Web

10 errores más comunes que pueden causar problemas de seguridad en ASP.NET

Brian Sullivan, comenta los 10 errores más comunes que se cometen al configurar aplicaciones ASP.NET, estas configuraciones mal hechas podrían ayudar a los atacantes a vulnerar nuestras aplicaciones Web.

  1. Custom Errors deshabilitado: Al tener deshabilitado esta opción, los errores que se producen en la aplicación se muestran a todos. Los valores adecuados son On y RemoteOnly, en el primero se puede especificar páginas personalizadas para mostrar mensajes de error más amigables.
  2. Dejar habilitado el seguimiento de página (Tracing): Esta característica de ASP.NET contiene información bastante detallada de todo lo que pasa en la aplicación (registro de instrucciones relacionadas con el principio y el final de métodos de la ejecución, como Init, Render y PreRender; variables o encabezados de formulario y objetos QueryString, jerarquía de controles, estado de sesión y estado de aplicación). Un atacante puede utilizar toda esta información - accediendo simplemente a trace.axd - para lograr vulnerar nuestras aplicaciones, el valor adecuado para esta opción es:
    xml:

    <trace enabled="false" localOnly="true">
  3. Depuración habilitada: Tener esta opción habilitada, no sólo afecta al rendimiento de la aplicación, sino también que se muestran errores más detallados.
  4. Cookies accesibles desde código de cliente: Esto básicamente se refiere al uso de cookies del tipo HttpOnly, técnica que mitiga de algún modo el robo de cookies. Hay que tener en cuenta que esta característica no es la panacea para asegurar nuestra aplicación, además si se habilita esta opción a nivel de la aplicación, puede traer ciertos problemas al momento de trabajar con cookies en código de cliente.
  5. Cookies de estado de sesión enviadas por Url: El autor recomienda usar cookies para almacenar el ID de la sesión, de este modo se evitaría que un atacante suplante a un usuario válido al robar este valor usando algún sniffer - personalmente no veo mucha diferencia entre usar uno u otro método.
  6. Cookies de autenticación enviadas por Url: Ídem al anterior.
  7. No usar SSL para transmitir las cookies de autenticación: El uso de SSL en teoría permite la comunicación segura de datos.
  8. Uso de slidingExpiration en la autenticación: El tener este valor habilitado (<forms slidingExpiration="true">), permite que el tiempo de vida de la sesión vaya cambiando a medida que el usuario vaya interactuando con la aplicación. Sin embargo, con esta opción deshabilitada sólo se dispone de un tiempo fijo para la sesión, de esta manera si alguien suplanta a usuarios legítimos sólo tendrá un espacio de tiempo limitado.
  9. Cookies de autenticación no únicas: EL autor se refiere a usar diferentes valores para el nombre de la cookie de autenticación (<forms name="otro_valor">) en aplicaciones ASP.NET diferentes (para los casos en los que existen más de 2 aplicaciones en un mismo dominio)
  10. Almacenar las credenciales de usuario en Web.config:

Para mayores detalles pueden visitar los artículos originales.

Categories
.NET ASP.NET Desarrollo de Software Miniposts Windows Forms

Screencast: Integración continua

Interesante screencast sobre Integración Continua realizado Scott Hanselman y Jay Flowers en DotNetRocks TV, hacen uso de CI Factory para explicar este tema.

Categories
.NET ASP.NET Windows Forms

Exportar reportes a PDF desde código

A partir de Visual Studio 2005, se incluyeron nuevos controles (ReportViewer) y clases (LocalReport, ServerReport, etc) con los cuales se pueden diseñar reportes tanto para aplicaciones de escritorio como para aplicaciones Web.

Una característica útil de estas nuevas clases, al igual que los reportes diseñados en Crystal Reports, es que permiten automatizar el proceso de conversión de los reportes a diferentes a diferentes formatos: MS Excel, PDF e Imagenes (en formato TIFF).

Revisando documentación acerca de este conjunto de clases encontré un ejemplo publicado por Raj Kaimal que justamente exporta los reportes a formato PDF desde ASP.NET usando el método Render de la clase LocalReport:

csharp:

private void RenderReport()
{
    LocalReport localReport = new LocalReport();
    localReport.ReportPath = Server.MapPath("~/Productos.rdlc");

    ReportDataSource reportDataSource = new ReportDataSource("Ejemplo_Productos", GetData());
    localReport.DataSources.Add(reportDataSource);

    string reportType = "PDF";

    string mimeType;
    string encoding;
    string fileNameExtension;
   
    //The DeviceInfo settings should be changed based on the reportType
    //http://msdn2.microsoft.com/en-us/library/ms155397.aspx

    string deviceInfo =
    "<DeviceInfo>" +
    "  <OutputFormat>PDF</OutputFormat>" +
    "  <PageWidth>8.5in</PageWidth>" +
    "  <PageHeight>11in</PageHeight>" +
    "  <MarginTop>0.5in</MarginTop>" +
    "  <MarginLeft>1in</MarginLeft>" +
    "  <MarginRight>1in</MarginRight>" +
    "  <MarginBottom>0.5in</MarginBottom>" +
    "</DeviceInfo>";

    Warning[] warnings;
    string[] streams;
    byte[] renderedBytes;
   
    //Render the report
    renderedBytes = localReport.Render(
        reportType,
        deviceInfo,
        out mimeType,
        out encoding,
        out fileNameExtension,
        out streams,
        out warnings);
   
    Response.Clear();
    Response.ContentType = mimeType;
    Response.AddHeader("content-disposition", "attachment; filename=productos." + fileNameExtension);
    Response.BinaryWrite(renderedBytes);
    Response.End();
}

En la primera porción de código resaltada, reportType puede tomar los siguientes valores: PDF, Excel o Image; los valores para deviceInfo varían de acuerdo al formato que se use y están documentados en MSDN

Por si alguien está interesado, he preparado un pequeño ejemplo basado en el código mostrado.

Categories
.NET AJAX ASP.NET CSRF Miniposts Seguridad XSS

Bug XSS en ASP.NET 2.0 y video sobre XSS, CSRF, Ajax Hacking

Para los interesados:

Categories
.NET AJAX ASP.NET Recursos Web

Ebook: Introducing Microsoft code name “Atlas” for ajax development

Para los interesados, el título hace referencia a un libro gratuito de unas 147 páginas, en el que se habla de Microsoft Atlas (antiguo nombre para el ahora denominado Microsoft Ajax) para el desarrollo de aplicaciones Web.

El libro está basado en el CTP de Julio de 2006, dividido en 4 capítulos:

  • Building Blocks of AJAX-Style Web Applications
    • The Paradigm Shift
    • The XmlHttpRequest Object
    • Existing AJAX Frameworks in .NET
    • Conclusion
  • Building Blocks of the Atlas Application Framework
    • The Atlas Architecture
    • The Programming Model of Atlas
    • A Sample Atlas Page
    • Conclusion
  • Updatable Page Fragments
    • Atlas Server Controls
    • Enabling Page Partial Rendering
    • Taking Control of Page Updates
    • Providing User Feedback During Updates
    • Conclusion
  • Atlas Controls and Extenders
    • The Atlas Control Toolkit
    • The Accordion Control
    • The Rating Control
    • The ReorderList Control
    • Atlas Server Extenders
    • Conclusion

Pueden descargarlo desde la siguiente dirección.