Tengo este código vulnerable que toma un parámetro GET, y lo coloca dentro de un elemento HTML ( h1 ), así como dentro de un atributo HTML ( data-text ):
$data = $_GET["payload"];
echo "<h1>" .$data. "</h1>";
echo '<div data-role="button" data-text="' .$data.'"></div>';
El auditor de Chrome XSS bloqueará <script>alert(1)</script> en el primer eco (dentro del elemento), pero no en el segundo (dentro del atributo) a pesar de que la carga útil podría ejecutarse a través de un gadget de script.
¿Por qué es eso?