有人告訴我,從我的數據庫輸出是雙重逸出基於作爲' " <
使用htmlspecialchars進行輸入是多餘的,然後在輸出上使用htmlentities?
所以輸出等,是htmlspecialchars($content_to_escape, ENT_QUOTES)
插入,然後echo htmlentities($content_to_echo);
多餘的?
有人告訴我,從我的數據庫輸出是雙重逸出基於作爲' " <
使用htmlspecialchars進行輸入是多餘的,然後在輸出上使用htmlentities?
所以輸出等,是htmlspecialchars($content_to_escape, ENT_QUOTES)
插入,然後echo htmlentities($content_to_echo);
多餘的?
將輸入存儲在數據庫中,如給定。
或者,您可以驗證輸入服務器端禁止某些字符。例如,對於街道名稱,您可能只允許使用字母數字和-
,<space>
和'
字符。
但是,爲了防止XSS焦點應該在輸出編碼。每次輸出都使用HTML編碼函數。當您需要輸出到另一個上下文(例如,用於JavaScript的十六進制實體編碼,JSON編碼等)時,將原始輸入存儲在數據庫中會使事情變得更加簡單(因而更加安全)。
我決定使用htmlspecialchars($ content,ENT_QUOTES,'UTF-8');你對那個怎麼想的? – janicehoplin
當你把它放入數據庫時,你不需要轉義html(減去通常的sql注入保護)。這種轉義只能在OUTPUT上進行,因爲所使用轉義的目的(和類型)完全取決於輸出如何被使用。例如如果html永遠不會以可以呈現爲html的方式使用,那麼在進行html轉義時就沒有用處。 –
如果你把它放到數據庫中,你不應該使用'htmlspecialchars()'。你應該使用PDO來處理正確的加載。你仍然需要在輸出中進行消毒。 –
我正在使用PDO,綁定參數。所以不要逃避數據庫,逃避。 – janicehoplin