2012-04-24 109 views
0

這可能看起來像一個愚蠢的問題,但用戶輸入的消毒不斷讓我困惑,我希望一勞永逸地得到明確的答案。隱藏表格元素上的高度

因此,繼承人的情景

  1. 客戶填寫網頁表單。
  2. PHP會檢查是否填寫了必填字段,否則不會讓客戶繼續下去。
  3. 如果是,則用戶輸入顯示在屏幕上以進行確認,而輸入數據也作爲隱藏表單元素存儲。
  4. 然後客戶確認輸入,然後發送隱藏的元素進行進一步處理。

使用數據不應該轉到最後一刻的原則,這將如何適用於隱藏在第3點的數據中的數據。(很顯然,屏幕上的數據在這一點上我有())

我應該在隱藏的元素上使用htmlentities,但是這在技術上不是最後一個階段,因爲在第4部分之後我會再次使用變量,然後再將它們粘貼到數據庫或電子郵件中。

我完全意識到我可能會完全錯誤,所以任何想法都非常受歡迎。^_^

回答

2

如果你寫出用戶對頁面的輸入,它應該總是被轉義。否則,沒有什麼可以阻止人們在他們的輸入中添加javascript等,或者嘗試逃離隱藏字段並將代碼注入頁面。所以,在隱藏的領域也使用htmlentities。僅僅因爲用戶看不到它們並不會阻止人們向他們注入代碼。

+0

這就是我的想法,但不會導致我進一步的問題?就像O'Maley這樣的名字在進入數據庫之前最終會像O'Maley一樣? – cosmicsafari 2012-04-24 14:24:49

+0

如果你使用的是htmlentities,那就不會使用單引號,只是html之類的東西,例如「和<(這就是mySQL轉義函數那樣做)。我不是100%,因爲我經常不使用PHP,但是當你提交表單之後,htmlentities()轉義字段不會作爲未轉義的文本返回嗎?如果他們不這樣做,你只需要記住在將它們粘在數據庫之前就可以避開它們。 – Tim 2012-04-24 14:33:23

+0

那麼使用預處理語句因此,涵蓋單引號等,不知道是否htmlentities會試圖做到這一點。感謝我認爲我有足夠的工作與現在。乾杯^ _ ^ – cosmicsafari 2012-04-24 14:35:43