爲了防止XSS,每當你輸出回用戶輸入時(就像你在顯示輸入錯誤的時候或者當用早先提交的值重新繪製表單一樣),你確實需要轉義html 。這是一個肯定的事......處理htmlescape/htmlspecialchars
所以,做這樣的事情
echo "the name which was supplied as {$_GET['company_name']} is not accepted"
是不對的。
相反,我們會這樣做。
echo "the name which was supplied as " . htmlspecialchars($_GET['company_name']) . " is not accepted"
考慮到這一點,在這裏我的問題是;,你是做什麼的$ _GET [「COMPANY_NAME」]需要顯示早在它開始從文本框時?也許你希望你的用戶修改company_name只是因爲它太長了?
如果你使用用htmlspecialchars,如果COMPANY_NAME是說AT & T,該&也就逃脫了,並且顯示爲&放大器;不是嗎?
那麼我們該如何處理這種情況呢?當然,有人可能會說,那麼不要htmlspecialchar它,只是按原樣返回它?
但是然後有人可能會發送一個company_name,這是一個精心製作的停止文本框啓動javascript onclick並從那裏做XSS。
你在這些情況下如何處理htmlescape?只需使用history.go(-1)?