Depende mucho del código del lado del cliente en cuanto a si esto es posible. Para una aplicación de una sola página, donde solo se carga directamente el código de marco estándar desde el servidor, luego se usan las llamadas del lado del cliente para extraer cualquier otro dato requerido, es trivial: solo enganche las llamadas del lado del cliente y asegúrese de que se analicen correctamente antes siendo utilizado en la página.
Sin embargo, en muchas aplicaciones antiguas, el servidor proporciona los datos directamente, incluso si luego se coloca en su lugar con el código del lado del cliente. En este caso, cualquier codificación del lado del cliente solo activaría después de el contenido se ha colocado en la página y, probablemente, se ejecutó.
Ejemplo de SPA (pseudocódigo):
<html>
<script>
clientContent = server.load(serverContent);
encode(clientContent);
document.body = clientContent; // raw content only included after encoding
</script>
<body>
</body>
</html>
Ejemplo de servidor renderizado:
<html>
<body>
serverContent // raw content executes here
</body>
<script>manipulateBody()</script>
</html>
En términos de métodos de codificación, depende del contexto de los datos vulnerables: para contextos HTML, vea cosas como enlace pero tenga en cuenta que necesitará diferentes caracteres de escape si las vulnerabilidades de XSS están dentro de los bloques de script, por ejemplo.