Creé un sitio web que obtiene la ruta de su solicitud y la devuelve en una etiqueta <link> como esta:
<link rel="canonical" href="PATH_HERE">
Puede ir a cualquier ruta que desee e insertar lo que quiera allí, y lo único que se desinfecta son las comillas dobles ( " ).
El back-end:
from flask import Flask app = Flask(__name__) # Catch every possible route @app.route('/', defaults={'path': '/'}) @app.route('/<path:path>') def catch_all(path): path = path.replace('"', """) return f""" <head> <title>Website</title> <link rel="canonical" href="{path}"> </head> """ if __name__ == '__main__': app.run(host="0.0.0.0", port=8080) Aquí está el HTML devuelto al realizar una solicitud a https://website.com/hello :
<html><head> <title>Website</title> <link rel="canonical" href="hello"> </head> <body></body></html> Y aquí está el HTML devuelto al realizar una solicitud a https://website.com/"</link><script>alert(1)</script> :
<html><head> <title>Website</title> <link rel="canonical" href=""</link><script>alert(1)</script>"> </head> <body></body></html>Me pregunto si es posible utilizar XSS en este sitio web.