2014-09-25 129 views
2

比方說,我有內容的文章(內容有HTML標籤)..所以:樹枝逃生( 'JS')Symfony2的

{{article.content|raw}} 

,它看起來不錯。

問題是,如果用戶添加腳本標記 - 所以我儘量做

{{article.content|raw|e('js')}} 

,並逃脫所有..我的意思是HTML等..

我得到雙倍逃出文字,我不沒有任何HTML標籤了,他們都逃脫了..是它的某種樹枝蟲或什麼?

例如: 我有"<p>test</p>"

{{article.content|raw}}我會看到 「測試」 與{{article.content|raw|e('js')}}我會看到"\x3Cp\x3Etestas\x3C\x2Fp\"。那麼,怎麼了?我知道我可以在服務器端轉義腳本標記,但我很感興趣知道我的方法出了什麼問題。

+1

你是否試過在生吃之前逃脫? – 2014-09-26 02:14:09

+0

是的,我試過..相同.. – user2118788 2014-09-26 05:14:07

+0

爲什麼你需要逃避js?我的意思是,如果你想顯示的內容是無論是它的HTML或JS只是打印他們'生' – Javad 2014-09-26 13:59:26

回答

0

您使用轉義過濾器的作業有錯誤的工具。用你寫的東西,「原始」過濾器什麼也不做,轉義轉義你輸出的字符串,以便它適合作爲數據包含在輸出的Javascript部分中。

你在找什麼是類似於HtmlPurifier的XSS過濾器。一旦您使用了composer或直接安裝在項目中添加XSS過濾器,您就可以爲Twig編寫一個自定義過濾器,它將過濾出XSS向量,如腳本標記等,併爲您提供一個可變安全的輸出方式,以通過原始過濾器。