的sanitize( 「你好」)=>你好如何u能允許<3或任何標記<不< or >結尾的任何字符消毒
,但如果我有
的sanitize(」 < 3" ),它的回報3只
我想它應該允許字符串,如果不與<或>
結束一樣,如果我做的sanitize (」 < 3> 4" ),它應該簡單地返回< 3> 4
的sanitize( 「你好」)=>你好如何u能允許<3或任何標記<不< or >結尾的任何字符消毒
,但如果我有
的sanitize(」 < 3" ),它的回報3只
我想它應該允許字符串,如果不與<或>
結束一樣,如果我做的sanitize (」 < 3> 4" ),它應該簡單地返回< 3> 4
您應該對內容進行預先清理,以正確編碼要保留的值。例如:
content.gsub!(/\<3/, '<3')
唯一要擔心的是你的清潔可能這種雙重逃脫&lt;3
可以證明煩人。如果需要,至少可以扭轉。
如果不去除無效括號,就不能「消毒」。有些瀏覽器會窒息這類事情,如果處理不當,可能會導致頁面完全損壞。
首先,Rails的內置消毒不處理格式錯誤的標記。
我強烈建議你使用來處理任何事情的寶石消毒有可能被畸形:
https://github.com/rgrove/sanitize
但你的問題是,非HTML編碼字符實體。通過CGI.escape()
require 'cgi'
CGI.escape('<3') # => "%3C3"
,對於終點運行它們:
require 'cgi'
Sanitize.clean(CGI.escape('<3')) # => "%3C3"
你有沒有考慮,而不是編碼它們的網址是什麼? – corsiKa
網址編碼與HTML無關。 – tadman