我創建了一個聯繫頁面,供用戶添加消息。我使用表格tinymce
。如何防止Laravel 4注入js?
問題是我在哪裏顯示所有消息。我無法使用{{{ $message->body }}}
,因爲它將html標記轉換爲字符串。如果我使用{{ $message->body }}
,它會執行JavaScript
,這可能很危險。
如果包含腳本標記,我需要某些內容才能通過表單驗證。那麼如何在Laravel 4中做到這一點?有沒有「laravelic」的方式來做到這一點?
我創建了一個聯繫頁面,供用戶添加消息。我使用表格tinymce
。如何防止Laravel 4注入js?
問題是我在哪裏顯示所有消息。我無法使用{{{ $message->body }}}
,因爲它將html標記轉換爲字符串。如果我使用{{ $message->body }}
,它會執行JavaScript
,這可能很危險。
如果包含腳本標記,我需要某些內容才能通過表單驗證。那麼如何在Laravel 4中做到這一點?有沒有「laravelic」的方式來做到這一點?
我想你可以試試這個(這裏看它User Contributed Notes):
$tagsToStrip = array('@<script[^>]*?>.*?</script>@si'); // you can add more
$message = preg_replace($tagsToStrip, '', $message->body);
當然,所有用戶提供的數據應該被轉義或純化。爲了避免輸出,可以使用三重大括號語法:
Hello,{{{$ name}}}。
最好的辦法是使用HTML過濾包Laravel 4像https://github.com/mewebstudio/Purifier
這允許您指定允許的HTML標籤和屬性(INC CSS樣式),並剔除任何不必要的標籤(公司)。
您還可以使用其他字段的常規輸入驗證,以確保它們只是例如阿爾法
不要重新發明輪子。使用[** HtmlPurifier **](https://packagist.org/packages/mews/purifier) – itachi
'{{$ message-> body}}'真的執行JavaScript嗎?因爲當我寫'hello world '和查看來源,'<' and '>'分別轉換爲'<'和'$ gt;'。 – Razor