Si une URL de site Web est encodée, le site Web est-il toujours vulnérable à XSS ou non?
Par exemple, si j'essaie <script>alert(1)</script>
et que l'URL du site code ma charge utile en %3Cscript%3Ealert(1)%3C%2Fscript%3E
cela signifie-t-il que le site est vulnérable à XSS ou non?
La réponse dépend de la façon dont la page rend votre charge utile.
Si la cible est une page HTML et que la charge utile apparaît toujours comme <script>alert(1)</script>
, un XSS se produira, en supposant qu'il n'y ait pas de CSP ou d'auditeur XSS de Chrome. Cependant, si la page HTML rend votre charge utile dans la syntaxe URL, c'est-à-dire %3Cscript%3Ealert(1)%3C%2Fscript%3E
, il n'y aura pas de XSS. Selon l'endroit où la charge utile est injectée dans ce dernier, j'essaierais également des caractères spéciaux comme "
et '
pour essayer d'échapper au contexte URL pour l'injecter directement dans la balise HTML (url).
Dans cet exemple particulier, ce paramètre ne serait pas vulnérable à XSS.
Cela dépend, vous ne donnez pas beaucoup d'informations, mais en général, cela semble être quelque chose comme: htmlspecialchars(htmlentities($input))
qui est incroyablement sûr.
Cela ne signifie pas que le site n'est pas vulnérable, cela signifie simplement que ce paramètre en particulier semble être sûr.
Cela dépend toujours, le paramètre injecte-t-il votre entrée dans un lien, une iframe, une image, etc.? S'il est injecté dans un autre élément, cela peut être possible indépendamment de l'utilisation de méthodes telles que javascript:
et data:
.