php-允许用户使用所见即所得发布BBCode或HTML?
作者:互联网
我一直在更新会员页面系统,其中一项要求是允许在某些字段上使用粗体,下划线,斜体,字体颜色和链接,但不允许使用字体大小或样式-所有这些都需要使用WYSIWYG编辑器.最初,这是通过文本区域和一些最小的HTML过滤完成的,即删除< script>与preg_replace().我知道,这绝对疯狂而且不安全.
我的第一个修订版本是使用TinyMCE并禁止TinyMCE中的某些标签,唯一的问题是,显然我不能依靠TinyMCE作为任何一种验证器,并且将针对我发现的XSS的HTML输入安全是绝对的雷区.
我花了大约一个小时的时间来阅读某些做法,似乎几乎不可能在不弄乱当前配置文件的情况下允许某些HTML标签/属性,并且进一步允许其他自定义项(例如字体大小和内联样式的东西.例如,我需要允许字体颜色带有span标签,但允许style属性也将允许任何CSS.
现在,我想出了一个在WYSIWYG编辑器中使用BBCode的想法,因为这将使我们能够安全地将htmlspecialchars()应用于输出,然后完全控制使用BBCode解析器为[b],[带有nl2br()的u],[i]和[color]标签用于换行.
唯一的问题是,我必须编写一些代码才能将当前的HTML设置转换为BBCode.
我的主要疑问是,BBCode的上述步骤足以抵御XSS攻击吗?还是我可以使用更优雅/明显的HTML安全方法?
解决方法:
您可以使用HTML Purifier库.它是重量级的,但是允许诸如“仅允许在样式标签中设置颜色”之类的规则.经过全面测试并积极开发.
标签:security,wysiwyg,xss,bbcode,php 来源: https://codeday.me/bug/20191023/1914290.html