允许用户将自定义html添加到个人资料页面

时间:2011-01-28 19:23:43

标签: php html filter tags html-parsing

我希望用户能够在网站上添加自定义html,我希望避免XSS攻击。我该怎么做呢?我以为我只允许这样的几个标签:

[b], [i], [u], [img], [hr], [list], [color=X], [size=X], [font=X], [url]

并删除其他所有内容。

3 个答案:

答案 0 :(得分:1)

不是处理允许用户在保持安全性的同时对网站进行编程的无限复杂性,而是使用简单的UI包装HTML。类似于你在我们在SO中发布的答案上面看到的内容。点击一个按钮......得到一些粗体......点击......下划线......等等。

答案 1 :(得分:1)

大多数人会建议使用PHP的bbcode解析器扩展。这意味着您已安装了扩展程序。你可以使用正则表达式来做到这一点,但你肯定需要小心。嵌套标签将增加比正则表达式配备更多的复杂功能。你开始使用回调等递归正则表达式替换之类的东西,甚至不能让我开始了解当用户不正确地嵌套他们的标签或将双引号放入他们的锚定网址时会发生什么。

将正则表达式用于bbcodes通常意味着你最终会死于灰熊死亡。

答案 2 :(得分:0)

您可以使用BBcode,Media Wiki格式或直接HTML,并过滤以仅允许某些属性/值的某些标签。您还可以使用RTE(富文本编辑器)

简化用户的任务