我想知道是否有必要逃避MySQL服務器的輸出如果被檢索的數據,當用戶提交表單已經被過濾。如果正在檢索的數據已經過清理,是否需要從MySQL服務器轉義輸出?
示例:
1.用戶提交表單並附帶對博客帖子的評論。
2.在表單提交之前,將數據發送到MySQL服務器,它們的輸入被過濾,用FILTER_SANITIZE_SPECIAL_CHARS
,以防止注入攻擊。
3.一旦數據發佈到服務器,用戶就會重新路由到另一個屏幕,他們可以查看他們的評論。
4.當從服務器檢索(已存儲的經濾波的輸入)他們的評論,是有必要逃脫這個輸出中呢?
下面是我的主要問題。我從表單(用於博客文章)中接收用戶輸入,用FILTER_SANITIZE_SPECIAL_CHARS
進行消毒,然後將其發佈到MySQL服務器。如果我從服務器檢索到這些信息並將其顯示在html中,則沒有問題。但是,我一直在閱讀,你應該總是逃避服務器的輸出。所以我逃過了htmlspecialchars()
這個帖子。現在,我遇到了所有特殊字符(包括圓括號和用戶在其帖子中使用的任何引號)以其轉義的html格式返回的問題。不用用戶友好。
什麼是最好的解決辦法這一點,或者是它甚至有必要逃避輸出,如果它是來自服務器和已消毒用戶輸入?
HTML編碼輸出,而不是輸入。 –