JASoft.org

Seguridad Web: Evitar ataques XSS con Cookies accesibles sólo desde el servidor

Seguridad Web: Evitar ataques XSS con Cookies accesibles sólo desde el servidor
Una de las técnicas de hacking de páginas web más conocidas es la de Cross-Site-Scripting o XSS. Mediante esta técnica, las aplicaciones Web vulnerables pueden ser atacadas para multitud de propósitos: servir de zombies para atacar a otras Webs inundándolas con peticiones, ejecutar código en zonas de seguridad menos restrictivas (como la local) o, sobre todo, robar la identidad de los usuarios del sitio vulnerable. Ha sido utilizado tradicionalmente en combinación con correos electrónicos maliciosos para entrar en sitios Web protegidos suplantando la identidad de usuarios autenticados. En mi curso de Desarrollo de aplicaciones seguras y seguridad de .NET monto un ejemplo completo de cómo utilizarlo en un supuesto sitio de banca electrónica (muy mal hecha y vulnerable), para robar la sesión del usuario y entrar en su cuenta. Este robo de sesiones se basa en la obtención mediante XSS de la cookie de sesión de un usuario, enviándola a un servidor bajo el control del atacante. Éste al rec... [Más]

El atributo "defer" de JavaScript

El atributo "defer" de JavaScript
La metodología clásica de creación de páginas Web recomienda que todos nuestros scripts se encuentren en la cabecera de la página. Está bien tener un orden pero realmente no es necesario. Es más, nadie nos dice que no podamos incluso tener varias cabeceras en la página, una por ejemplo, después de cerrar la etiqueta </body>, si queremos. Hay algunas aplicaciones que usan mucho JavaScript. Sobre todo ahora con el uso masivo de capacidades AJAX en las aplicaciones Web. Algunos de estos scripts son simples bibliotecas de funciones con decenas o cientos de ellas que lo único que hacen es retrasar la carga de página mientras son procesadas por el navegador, ya que éste no sólo carga cada Script sino que también lo interpreta y ejecuta a medida que lo va leyendo. En otros casos el script necesita tener acceso a todos los elementos de la página antes de poder actuar (es decir, el HTML de la página debe ser procesado por completo y el árbol DOM construido). Si lo colocamos en la cabecer... [Más]

Como evitar que las sesiones caduquen por inactividad: The Film

Como evitar que las sesiones caduquen por inactividad: The Film
Uno de los posts más visitados de mi blog es en el que comento cómo evitar que las sesiones caduquen por inactividad. Es la tercera parte de una serie de posts sobre caducidad de sesiones en ASP.NET. Ha habido también muchos comentarios y parece que a mucha gente le cuesta bastante implementar la solución, por lo que tras varias peticiones (tanto en mi blog original, JASoft.org, como en Geeks.ms) me he decidido a generar un vídeo práctico mostrando como se hace.  Es del estilo de los que tenemos en los cursos de campusMVP pero con mucha peor calidad, que viene impuesta por las limitaciones de SOAPBox. Lo cierto es que estos sitios de vídeo en Internet no son los más adecuados para este tipo de grabaciones por su elevada compresión, que limita la calidad, pero bueno... se deja ver. A ver si lo puedo colgar en Channel9 de Microsoft en breve y así que podáis verlo con major calidad:

Forzar el modo de compatibilidad de IE8 en nuestras aplicaciones

Forzar el modo de compatibilidad de IE8 en nuestras aplicaciones
En el post que escribí hace unos días sobre cómo solucionar el problema de los menús de ASP.NET en IE8, comenté que en un futuro post explicaría cómo forzar desde nuestra aplicación que la gente que acceda a la misma con Internet Explorer 8.0 la vea en modo de compatibilidad con Internet Explorer 7.0. Esto es de especial importancia para nosotros si nuestra aplicación no se visualiza bien según los estándares estrictos de CSS 2.1 pero no tenía problemas con la versión anterior de IE. Dado que, como comentaba en el anterior post, no podemos confiar en que los usuarios vayan a pulsar el botón de compatibilidad si la página se ve mal (simplemente semarcharán o si tenemos mucha suerte intentarán usar Firefox), lo mejor que podemos hacer es forzar de manera transparente para ellos esa compatibilidad. Para ello disponemos de varias técnicas: 1.- Usar una etiqueta META especial en nuestra página Si incluimos la siguiente etiqueta META en la cabecera de nuestra página podremos conseg... [Más]

Mi menú ASP.NET no se ve en Internet Explorer 8: Solución rápida

Mi menú ASP.NET no se ve en Internet Explorer 8: Solución rápida
Internet Explorer 8 ofrece una compatibilidad con los estándares de la W3C sin precedentes en los navegadores de Microsoft (incluso ha pasado el ACID2 test). Se trata de una gran noticia para los programadores Web ya que cuanto más estándar sean todos los navegadores menos esfuerzos para desarrollar interfaces pasaremos pues no hay que estar pegándonos para conseguir que funcione en todos ellos. Por desgracia esta compatibilidad estricta hará que algunos sitios Web que funcionaban perfectamente en la versión anterior (la 7.0) de IE dejen de hacerlo ahora en la nueva versión, dado el modo diferente de tratar ciertos elementos (sobre todo CSS) que éste tenía. Esto es algo de lo que Microsoft es muy consciente y por eso ha incluído un modo de compatibilidad con IE7 en la última versión. Así, si entramos en una página que se veía perfectamente con IE7 pero ahora no vemos correctamente sólo tenemos que pulsar el botón a tal efecto colocado al lado de la barra de direcciones del navegador p... [Más]

Cómo determinar qué aplicación Web está fuera de control en nuestro servidor

Cómo determinar qué aplicación Web está fuera de control en nuestro servidor
Imagínate la situación: tu servidor web alberga decenas de aplicaciones Web. de repente un día notas que el servidor está al límite de sus posibilidades, con el procesador al 100% todo el tiempo, y sin saber porqué. Abres el administrador de tareas del servidor y ves que un proceso W3WP.exe es el que está haciéndose con el procesador. Así que una de tus aplicaciones Web está desmadrada y se empieza a comer todos los recursos de proceso, haciendo que las demás vayan cada vez más lentas. Pero hay decenas de w3wp.exe funcionando porque tienes decenas de aplicaciones, así que ¿cómo diablos averiguas cuál de ellas es la aplicación problemática? Vale, lo primero es averiguar el identificador del proceso que se está comiendo los recursos del procesador oniéndolo al 100% todo el tiempo. Para ello, en el administrador de tareas (CTRL+MAYS+ESC) vas al menú Ver·Seleccionar Columnas y añades este campo a la lista de procesos, ya que no viene por defecto: Una vez que ya sabes el identificador... [Más]

Vídeo en Channel9 en Español: bibliotecas cliente de AJAX y JavaScript en Visual Studio 2008

Vídeo en Channel9 en Español: bibliotecas cliente de AJAX y JavaScript en Visual Studio 2008
Ya está disponible en Channel9 un nuevo vídeo que he hecho sobre las bibliotecas del lado cliente de AJAX y un montón d cuestiones relacionadas con JavaScript en Visual Studio 2008. Enseño a llamar a servicios Web desde JavaScript, cómo generar biblitecas .js con soporte para Intellisense en Visual Studio, y unas cuantas cosas más. Se ve con una calidad estupenda, pero debes ponerlo a pantalla completa usando el botón de la derecha que aparece en la parte de abajo cuando pasas por encima con el ratón (el que tiene las flechas en esta figura): Pulsa la imagen para ir la página del vídeo Puedes verlo en streaming directamente desde la página (necesitarás Silverlight 2.0) o bien descargártelo en diversos formatos: En la página podrás encontrar otros vídeos intereantes, muchos de los cuales los han hecho también otros tutores de campusMVP, como Unai Zorrilla, Bruno Capuano, o Alberto Población. Seguro que dentro de poco habrá alguno más de los míos, de los que os iré informando... [Más]

Sitios Web o Aplicaciones Web en Visual Studio 2005/2008: ¿cuál utilizar?

Sitios Web o Aplicaciones Web en Visual Studio 2005/2008: ¿cuál utilizar?
Como seguramente sabrás, con la aparición de Visual Studio 2005 el modelo de troyectos Web cambió completamente. Se pasó de un modelo "code-behind" a un modelo "code-beside" (que ahora explicaré con calma), y la estructura de aplicaciones anteriores dejó de ser compatible con ASP.NET 2.0. Esto hacía complicado, sobre todo, la migración de las aplicaciones desde ASP.NET 1.x a las nuevas versiones, y desató muchas protestas (aunque muchos protestaron simplemente por inmovilismo y reticencia al cambio). Ante ello Microsoft respondió unos meses después sacando los Visual Studio 2005 Web Application Projects. Éstos añadían compatibilidad con el modelo anterior a Visual Studio 2005, y de hecho se convirtió en una parte estándar del entorno al salir el Service Pack de VS2005. Ahora forman parte integrada desde el principio de Visual Studio 2008 también. A la hora de crear un proyecto nuevo para la Web podemos elegir entre crear un sitio Web (opción por defecto): o crear un proyecto de tip... [Más]

Impresionante editor de informes basado en Web

Impresionante editor de informes basado en Web
Hoy me he encontrado con un producto que me ha parecido, a simple vista, impresionante. Se trata de Stimulsoft Reports Designer.Web. Se trata de un complemento para el produto de generación de informes que tiene esta empresa -para mi hasta ahora desconocida- y que permite hacer la edición directa de los informes en cualquier navegador. Funciona en Internet Explorer, Firefox, Opera, Safari, etc... ya que estña hecho en Flash. Tiene todo tipo de detalles, empezando por la interfaz de usuario. Os dejo algunas capturas:   No dejes de probarlo on-line. El producto es comercial pero tiene un precio, en mi opinión, muy razonable y creo que merece la pena echarle un vistazo.

Este soy yo y este es mi blog técnico, dedicado al software y a la programación.

¡Sígueme en Twitter!

Mis otros blogs

- JM Alarcón @ campusMVP.es
Contenido técnico en español orientado a desarrolladores
- JMAlarcon.es
Blog personal no técnico: sociedad, innovación, empresa...

Krasis

- campusMVP.es:
Los mejores cursos online de programación en español

- SELF LMS:
La plataforma de elearning más potente del mercado.

Histórico