我有一个自定义论坛,我使用htmlentities,因此用户无法发布恶意代码(html / js)。无论如何,当我从数据库中提取帖子时,我使用str_replace来显示某些html元素<,>,&等等。这样做有什么害处吗?它会导致副作用/ html渲染吗?
答案 0 :(得分:0)
使用strip_tags来避免任何html / js / php。 它有一些选项可以允许你想要的任何标签:
strip_tags($text, '<p><a>');
答案 1 :(得分:0)
strip_tags
,如文档中所述,不会删除内联javascript或清理,因此这不是一个好主意。一个常见的解决方案是使用bbcode
代替许多库,或者您可以创建自己的库,然后使用preg_replace
安全地替换您自己的标记。
以下是一个快速示例:
$safe_output = htmlspecialchars($output);
$find = array("'\[b\](.*?)\[/b\]'is");
$replace = array("<strong>\\1</strong>");
$result = preg_replace($find, $replace, nl2br($safe_output));
答案 2 :(得分:0)
htmlentities
或htmlspecialchars
或允许字符的某些子集。您可以使用str_replace
执行此操作,但有更好的实用程序。)