想象一下這個簡單的形式什麼是編碼URL的字符?瀏覽器還是PHP?
<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>
現在想象一下,它通過form.php?hack=" onsubmit="alert('xss')
輸出進行訪問時,我查看源代碼是
<form action="/things/?hack=%22%20onsubmit=%22alert(%27xss%27)" method="post">
是什麼編碼這 - 就是它的瀏覽器或PHP?
出於好奇,我總是在htmlspecialchars()
內回覆$_SERVER['REQUEST_URI']
。
你可以通過瀏覽器的等式來檢查這種事情。我有些驚訝,你沒有通過telnet到Web服務器來自己調查。 – outis 2010-03-03 13:27:57
@outis我認爲你承擔了太多的我。我不知道該怎麼做。雖然我會研究它。謝謝。 – alex 2010-03-03 14:00:29
@alex:幸運的是,考慮到HTTP的簡單性,它並沒有太多。易於調試是HTTP是純文本協議而不是二進制協議的兩個主要原因之一。如果您想要迷你指南,則有大量顯示基本信息的網頁(http://www.google.com/search?q=http+telnet)。 – outis 2010-03-03 14:49:15