2014-05-18 48 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样式),并剔除任何不必要的标签(公司)。

您还可以使用其他字段的常规输入验证,以确保它们只是例如阿尔法