2012-01-04 75 views
1

我的一個模塊使用filter_xss去除標籤,並且已將「fb:profile-pic」設置爲允許的標籤。但是,filter_xss不會允許具有名稱空間的標籤(因此冒號)。防止filter_xss剝離facebook-namespaced標籤

有沒有解決這個辦法嗎?或者,這是一個filter_xss中的錯誤,不能正確識別冒號作爲標記名稱的一部分?

+0

[這是一個錯誤](http://drupal.org/node/1328768)我很害怕,2011年11月報告。看起來它目前未分配,所以沒有提示何時/如果它將被修復:( – Clive 2012-01-04 17:57:26

+0

剛剛注意到,如果你看[Drupal 6的'filter_xss()'],你可能實際上已經評論過這篇文章了(http://api.drupal.org/api/drupal/modules--filter--filter。 module/function/filter_xss/6)和['filter_xss()'for Drupal 7](http://api.drupal.org/api/drupal/includes--common.inc/function/filter_xss/7)看到它們是相同的,所以問題仍然存在Drupal 6 – Clive 2012-01-04 17:59:27

+0

謝謝克萊夫,我現在必須進行破解工作。 – 2012-01-04 18:46:34

回答

1

所以不是一個完美的「答案」,但我通過(gasp!)修補核心來解決問題。在模塊/濾波器/ filter.module,線1059:

if (!preg_match('%^(?:<\s*(/\s*)?([a-zA-Z0-9:-]+)([^>]*)>?|(<!--.*?-->))$%', $string, $matches)) { 
              ^^ 
              Added colon and hypen here. 

我加入冒號和hypens作爲允許的字符在代碼,以 「A-ZA-Z0-9」 沿。現在只需要記住在所有核心更新之後應用此修補程序。