Cross Site Request Forgery

El CSRF (del inglés Cross-site request forgery o falsificación de petición en sitios cruzados) es un tipo de exploit malicioso de un sitio web en el que comandos no autorizados son transmitidos por un usuario en el cual el sitio web confía. Esta vulnerabilidad es conocida también por otros nombres como XSRF, enlace hostil, ataque de un click, cabalgamiento de sesión, y ataque automático[…]

Cross Site Request Forgery: Qué es, para que sirve y como protegerlo

¿Que es el Cross Site Request Forgery (CSRF)?

JavaScript: Detectar el final de una descarga

Vamos a ver como podemos saber cuando ha finalizado una descarga iniciada en nuestra página usando un sencillo procedimiento.

Este procedimiento se basa en que al empezar la descarga, la página perderá la captura del mouse, ya que la ventana emergente de descarga será la que estará en primer plano, de esta manera cuando finaliza la descarga, o cuando el visitante la cancele, la página volverá a estar activa ganando la captura del mouse de nuevo.

De esta manera, podemos saber cuando ha finalizado la descarga usando el evento onfocus del objeto window de nuestro navegador, para que todo funcione correctamente utilizaremos las siguientes funciones:

function descargar(url) {
window.onfocus = finalizada;
document.location = url;
}
function finalizada() {
window.onfocus = vacia;
// Modificar a partir de aquí
alert()
}
function vacia(){}

Para iniciar una descarga haremos:

<a href="javascript:descargar('archivo.exe')">Descargar el archivo</a>

Fuente

JQuery: Detect if a scrollbar is present.

jquery1

// Used like $('#my-id').hasScrollbar();

jQuery.fn.hasScrollbar = function() {
    var scrollHeight = this.get(0).scrollHeight;

    //safari's scrollHeight includes padding
    if ($.browser.safari)
        scrollHeight -= parseInt(this.css('padding-top')) + parseInt(this.css('padding-bottom'));

    if (this.height() < scrollHeight)
        return true;
    else
        return false;
}

You’ll manually need to call this after adding or removing content from the div and it probably will only work if you call it on visible elements, but it’s better than starting from scratch.

Source