Pequeñas funciones de Javascript que te pueden salvar de más de un apuro

En este artículo, vamos a crear una librería con unas cuantas funciones pequeñas de Javascript, pero muy muy útiles. Nuestra librería está encapsulada en el objeto usefulStuff. Mediante este objeto, seremos capaz de llamar a los distintos métodos que la integran. Sin más dilación, vamos a ver esas funciones de Javascript pequeñas, pero matonas.

Forzar HTTPS en Javascript

Podemos utilizar Javascript para chequear si los usuarios están en una página segura (HTTPS) y redirigirlos al equivalente HTTPS de la página actual si no lo están:

toHttps: function() {
    if (window.location.href.indexOf("https://") === -1) {
        window.location = "https://" + window.location.hostname +
        window.location.pathname +
            window.location.search +
        window.location.hash;

    }
},

Caracteres HTML y seguridad

Como JavaScript no tiene una funciónes incorporadas que realicen las tareas que realizan funciones como htmlentities o htmlspecialchars en PHP, podemos crear fácilmente una. Sin embargo, nuestra función no convertirá todos los caracteres especiales de HTML a sus entidades equivalentes o viceversa. Sólo queremos convertir los necesarios como para evitar que los usuarios añadan scripts y otras etiquetas y atributos posiblemente maliciosos a través de sus inputs.

Para convertir los caracteres especiales en HTML inofensivo podemos reemplazar el texto de forma masiva:

toEntities: function(string) {
    return string.replace(//g, ">").
        replace(/"/g, """).replace(/&/g, "&");
},

Hacer lo contrario simplemente requiere reemplazar las entidades por caracteres especiales:

decodeEntities: function(string) {
    return string.replace(//g, ">").
        replace(/"/g, """).replace(/&/g, "&");
},

Parsear URL con Javascript

Otra cosa útil que puedes llevar a cabo por la seguridad de tu web es analizar los parámetros GET en la URL. Como sabes, se puede acceder a ellos con window.location.search pero el valor devuelto es una cadena con los parámetros todos juntos, algo como esto: "?a=1&d&bb=355&grr=hello". Por lo tanto, podemos crear una pequeña función que scualquier cualquier URL como argumento y convertirá los parámetros GET en un objeto que se puede utilizar fácilmente dentro de la aplicación.

queryObject: function(href) {
    var qObject = {};
    if (href.indexOf("?") !== -1) {
        var q = href.substring(href.indexOf("?") + 1);
        q = q.split("&");
        q.forEach(function(val,i) {
            val = val.split("=");
            if (val[0].length) {
                qObject[val[0]] = val[1] ? val[1] : "";
            }

        })
        return qObject;
    }
    return {};
}

Elimina los iframes de tu sitio web

escapeFrames: function() {
    if (top.location!= self.location) {
        top.location = self.location.href;
    }
}

Nuestro último método te permitirá eliminar cualquier iframe, sin importar quién lo haya puesto en tu página web. Si una persona X intenta añadir un iframe de otra página web en tu sitio web, cuando los usuarios visiten la página donde está el iframe, serán redirigidos directamente a la página donde apunta el iframe y no permanecerán en tu página.

Por ejemplo, si en el index.html llamamos al método escapeFrames:

usefulStuff.escapeFrames();

Y en otra página llamada other-page.html tenemos el siguiente diseño:

<body>
<h1>I am in a different page</h1>
<iframe src="index.html" frameborder="0"></iframe>

</body>

Cuando other-page.html se abra, los usuarios con el javascript habilitado siempre terminarán con la página index.html abeierta en su navegador, en lugar de other-page.html.

Es muy buena idea poner esas funciones que sueles utilizar con frecuencia en tus proyectos en un archivo separado, para poder reutilizarlas una y otra vez siempre que sea necesarios. De esta manera, cuando pase mucho tiempo, te habrás dado cuenta de que has desarrollado una colección de muchas funciones las cuales se pueden reutilizar fácilmente en diferentes proyectos sin tener que volver a desarrollarlas.

Fuente: phpgang.com

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP