我有一个自定义论坛,我在其中使用 htmlentities,因此用户无法发布恶意代码(html/js)。无论如何,当我从数据库中提取帖子时,我使用 str_replace 来显示某些 html 元素 <、>、& 等。这样做有什么害处吗?它会导致副作用/html呈现吗?
问问题
476 次
3 回答
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));
于 2012-07-15T15:48:56.613 回答
0
- 用户发布数据
- 数据为mysql转义,写入数据库
- 用户请求数据
- 数据被编码以供显示(积极地使用
htmlentities
orhtmlspecialchars
或某些允许的字符子集。您可以使用 来执行此操作str_replace
,但有更好的实用程序)。
于 2012-07-15T15:49:44.883 回答
0
使用strip_tags避免任何 html/js/php。它有一些选项可以允许你想要这样的任何标签:
strip_tags($text, '<p><a>');
于 2012-07-15T15:43:57.880 回答