¿Por qué las secuencias de comandos entre sitios se llaman secuencias de comandos entre sitios? El término implica para mí (un hablante no nativo de inglés) que hay algún otro sitio web involucrado que ataca su sitio web, pero la mayoría de las veces este no es el caso, ¿verdad? (Demonios, tampoco siempre incluye secuencias de comandos (que suministran JavaScript al usuario). Una interfaz HTML falsificada también suele ser una estrategia de ejecución viable).
Tal como lo entiendo, lo que llamamos XSS se debe a un escape insuficiente de la entrada del usuario y ocurre principalmente en las aplicaciones web, como se muestra en esta pregunta . Por ejemplo, el siguiente fragmento de código es vulnerable:
<?php
echo $_GET['q'];
?>
Pero lo siguiente lo corrige [1] :
<?php
echo htmlspecialchars($_GET['q']);
?>
La entrada del usuario también se puede almacenar en la base de datos, y lo mismo sucede si la entrada no se escapa cuando se devuelve para su visualización. Y, de hecho, este parece ser el método de ataque que es el más beneficioso para el atacante (afecta a la mayoría de los usuarios) y, por lo tanto, el más utilizado.
Siento que la falta de claridad del término conduce a trabajos de pirateo como eliminando caracteres ofensivos o cadenas de entrada del usuario y otra confusión ( aparentemente, permitir JavaScript válido en la base de datos está mal ) cuando las personas sin experiencia están tratando de parchear por ello.
En lugar del término abstracto XSS, ¿algo como falta de escape no funcionaría igual de bien, y sería mucho más claro? ¿O hay algo más que el término XSS abarca?
[1]: Suponiendo que estamos en medio de una página HTML, por supuesto.