防止外部html干扰整个页面模板

时间:2015-10-18 07:57:35

标签: javascript html

我的任务是探索博客并获取他们的最新帖子。现在我有了执行任务的脚本,并将内容作为html存储在数据库中 除模板推断外,一切正常。意味着如果内容html代码例如有额外的</div>或忘记关闭标记,则会破坏我的整个页面。

问题:有没有办法将外部内容限制为一个部门,因此如果外部代码有问题,只影响div框的模板而不是整个模板?

Link to correct template
Link to damaged template

提前致谢

2 个答案:

答案 0 :(得分:1)

我们可以通过使用修复被废弃的格式错误的代码的库来简化它。

你可以这样做:

<?php
$content = '<div><p>I am a bad guy, and i am gonna put an additional div at the end.</p></div></div>';

$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD );
libxml_clear_errors();
$content = trim($dom->saveHTML());


echo $content;

它将返回:

<div><p>I am a bad guy, and i am gonna put an additional div at the end.</p></div>

答案 1 :(得分:1)

唯一安全的方法是确保它不会影响您网页上的任何其他内容,据我所知,是iframe。其他任何东西都会注入你的页面,所以你冒着被提及的东西冒险,比如未封闭的标签,覆盖你的CSS的样式标签,潜在的恶意JS等,除非你做一些严肃的解析和纠错。其中一些是通过JQuery的AJAX功能完成的,但是如果你不能冒任何风险,我会选择一个iframe来显示一个呈现你的内容的页面。