2011-04-19 20 views
0

我正在使用WYSIWYG來允許用戶格式化文本。這是導致錯誤的文字:ColdFusion - 我需要表單POST的URLDecode嗎?/URLDecode隨機刪除一個字符

<p><span style="line-height: 115%">This text starts with a 'T'</span></p> 

的錯誤是「T」中的「本」,或任何第一個字母恰好是,使用URLDecode並保存到數據庫時,隨機取出。在服務器端刪除URLDecode似乎可以解決它,沒有任何負面影響(數據庫包含相同的信息)。

documentation

在HTTP查詢字符串始終是URL編碼。

這是真的嗎?如果是這樣,爲什麼不刪除URLDecode似乎弄亂了一切?

所以兩個問題:

  1. 爲什麼URLDecode使得第一文本字符像這樣被刪除(這似乎當line-height屬性存在只發生)?
  2. 在將POST數據放入數據庫之前,我真的需要(或者甚至想要)使用URLDecode嗎?

編輯:我做了一個測試頁來回顯解碼文本,並且URLDecode絕對刪除那個字符,但我不知道爲什麼。

回答

1

我相信解碼是在form範圍被填充時自動完成的。這就是爲什麼%(此字符用於編碼)之後的字符被刪除 - 您嘗試第二次解碼字符串。

出於安全原因,您可能有興趣剝離script標記,或者甚至使用白名單清理HTML。嘗試在CFLib.org中搜索適用的功能。

+0

好的,這是有道理的。我跑了另一個測試,'%'> Th'去'$「> h'。這是否有資格成爲CF的一部分?我猜這是無效的語法,但在這種情況下的行爲似乎不穩定。無論如何,感謝「form」範圍的信息。 – jtpereyda 2011-04-19 16:45:06

+0

編碼使用%符號以十六進制編碼值。所以%20是一個空間。所以你的URLDecode試圖找出什麼意思,並在這種情況下導致怪異的結果。 – Salsero69 2011-04-20 16:36:59