2014-05-18 45 views
1

我創建了一個聯繫頁面,供用戶添加消息。我使用表格tinymce如何防止Laravel 4注入js?

問題是我在哪裏顯示所有消息。我無法使用{{{ $message->body }}},因爲它將html標記轉換爲字符串。如果我使用{{ $message->body }},它會執行JavaScript,這可能很危險。

如果包含腳本標記,我需要某些內容才能通過表單驗證。那麼如何在Laravel 4中做到這一點?有沒有「laravelic」的方式來做到這一點?

+2

不要重新發明輪子。使用[** HtmlPurifier **](https://packagist.org/packages/mews/purifier) – itachi

+0

'{{$ message-> body}}'真的執行JavaScript嗎?因爲當我寫'hello world '和查看來源,'<' and '>'分別轉換爲'<'和'$ gt;'。 – Razor

回答

0

我想你可以試試這個(這裏看它User Contributed Notes):

$tagsToStrip = array('@<script[^>]*?>.*?</script>@si'); // you can add more 
$message = preg_replace($tagsToStrip, '', $message->body); 
0

最好的辦法是使用HTML過濾包Laravel 4像https://github.com/mewebstudio/Purifier

這允許您指定允許的HTML標籤和屬性(INC CSS樣式),並剔除任何不必要的標籤(公司)。

您還可以使用其他字段的常規輸入驗證,以確保它們只是例如阿爾法