Estoy creando una extensión de Chrome que hará solicitudes de "obtención" y "publicación" de origen cruzado a algunos sitios web de terceros. Llevo horas investigando este proceso y cada vez me preocupo más por la seguridad.
Necesito obtener la información de URL "agregar a la bolsa" y publicar la información del usuario en esa página para completar los campos requeridos. La extensión de My Chrome tiene una página JavaScript de fondo, una página emergente de JavaScript, una página HTML con información del usuario y una página emergente HTML. La solicitud HTTP ocurrirá en la página de JavaScript de fondo y enviará una solicitud de origen cruzado al sitio web que el usuario está visitando actualmente.
Me preocupa la seguridad al publicar datos de usuarios y la posibilidad de recuperar información maliciosa cuando uso la solicitud de obtención, para obtener datos de la página, posiblemente una imagen, y la URL de agregar a la bolsa. He leído acerca de escapar; pero no estoy realmente seguro de cómo funciona este proceso. ¿Simplemente uso encodeuricomponent()
?
function httpGetAsync(theUrl, callback){
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
var resp = encodeURIComponent(xmlHttp.responseText)
callback(resp);
}
xmlHttp.open("GET", theUrl, true);
};
Encontré este sitio web que trata sobre cómo prevenir ataques XSS: XSS (Cross Site Scripting) Prevention Cheat Sheet
¿Debo usar JsonP junto con una función de escape como, por ejemplo, esta función anidada bajo la sentencia if?
function (xmlHttp) {
// function to escape data? not sure how to do this
var resp = encodeURIComponent(xmlHttp.responseText)
callback(resp);
}
El sitio web de Chrome para desarrolladores indica que:
document.getElementById("resp").innerText = xhr.responseText;
or: resp = JSON.parse(xhr.responseText);
son prácticas seguras y simplemente para evitar el uso de .innerhtml
.
Cualquier consejo o material de lectura sugerido para futuras investigaciones me ayudará enormemente.