使用 BBCodes...解析 HTML 还是完全删除它? (XSS/PHP)
我正在 PHP 中创建一个迷你论坛,我希望允许用户发布具有有限文本格式和嵌入图像的帖子,但我想安全地做到这一点(XSS 方面),我想知道下面的最佳方法是什么。
1) 从用户输入中去除所有 HTML 标签,并用 BBCode 替换所见即所得编辑器的控件。 strip_tags 足够吗?
2) 允许通过所见即所得的 HTML 输入,但使用解析器将输出从 HTML 转换为 BBCode。有人可以为此推荐一个安全的 BBCode 解析器吗?
任何其他想法都非常受欢迎。
I'm creating a mini-forum in PHP and I want to allow user posts with limited text formatting and embedding images, but I want to do it securely (XSS-wise) and I was wondering what's the most optimal approach of the ones below.
1) Strip all HTML tags from user input, and replace the WYSIWYG editor's controls with BBCode. Is strip_tags sufficient for this?
2) Allow HTML input through the WYSIWYG, but use a parser to convert the output from HTML to BBCode. Can anyone recommend a secure BBCode parser for this?
Any other ideas are more than welcome.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您无需解析或剥离 HTML 即可确保安全。只需在打印之前通过
htmlspecialchars
运行所有内容,然后你很安全。此外,这与使用 BBcode 是正交的。您可以让编辑器生成用于格式化的 BBcode,并且
htmlspecialchars
不会以任何方式干扰它。You don't need to parse or strip HTML to be secure. Just run everything through
htmlspecialchars
before you print it and you are safe.In addition, this is orthogonal to using BBcode. You can have your editor generate BBcode for formatting, and
htmlspecialchars
will not mess with it in any way.