Pergunta

Imagine esta forma simples

<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">
    <fieldset>
        <legend>Contact Me</legend>
        <label for="email">Email:</label>
        <input type="text" name="email" id="email" />
        <button type="submit">Submit</button>
    </fieldset>
</form>

Agora imagine que é acessado via form.php?hack=" onsubmit="alert('xss')

A saída quando eu vejo a fonte é

<form action="/things/?hack=%22%20onsubmit=%22alert(%27xss%27)" method="post">

O que está codificando isso - é o navegador ou PHP?

Fora da curiosidade, eu sempre eco $_SERVER['REQUEST_URI'] dentro de htmlspecialchars().

Foi útil?

Solução

Isso é feito pelos navegadores, se você estiver sob alguma estrutura de PHP, alguns deles também a alteram. É semelhante ao que você faz usando PHP urlencode função.

Outras dicas

Se você entrar form.php?hack=" onsubmit="alert('xss') Em seu campo de endereço do seu navegador, ele o converte para form.php?hack=%22%20onsubmit=%22alert(%27xss%27) Enquanto o " e os personagens espaciais não são permitidos em um URI. Então eles devem ser codificados. o ' é permitido em Uris, mas também pode ser codificado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top