0

我有一个新闻提交表格。我希望通过剥离所有 html 标签来防止 XSS 等。然后我将使用这种格式转换所有其他标签

[tagname attributes][/closetagname]

对此

<tagname attributes></closetagname>

. 问题是如何将标签转换为这种格式。

4

4 回答 4

2

好吧,如果您使用的是 PHP,我认为内置的strip_tags()和 PHP 扩展bbcode的组合应该可以满足您的需求。

于 2011-02-24T09:37:09.253 回答
2

仅仅通过“剥离所有 html 标签”和“转换所有其他标签”,你将不会受到 XSS 的影响。对抗 XSS 只能通过将一些已知标签列入白名单(并将一些已知属性列入白名单)来工作,而黑名单总是会失败。这里有一个更完整的解释

在 PHP 中清理 HTML 代码的一个很好的解决方案是使用HTML Purifier

于 2011-02-24T21:10:41.507 回答
0
<?php
$string = '<tagname attributes></closetagname>';
$clean = str_replace(array('<','>'),array('[',']'), $string);
echo $clean; //[tagname attributes][/closetagname]
?>

当然,这将替换 < 和 > 的所有实例。

于 2011-02-24T09:05:40.700 回答
-1
<?php
$text = '[tagname attributes][/closetagname]';
$text = preg_replace('/\[([^\[]+?)\]/', '<$1>', $text);
echo $text;
?>

假设您没有在标签内获得 [ 和 ] 。

于 2011-02-24T08:59:38.790 回答