我想支持Plone完成的一些安全过滤,但仅适用于拥有经理或站点管理员角色的人员。我希望常规成员能够添加内容,但仍应过滤该内容。特别是在这一刻,我正在考虑允许iFrames担任经理角色,但这个问题也更通用。我所指的Plone访问是通过Plone的标准编辑系统TinyMCE编辑网站页面的人。
答案 0 :(得分:4)
如果查看TinyMCE代码,您会看到它从服务器加载了一些配置。通过safe_html
工具内的portal_transforms
转换(
见https://github.com/plone/Products.TinyMCE/blob/11b957652846679cf7f441cc956730bd6fc92f87/Products/TinyMCE/utility.py#L499)。
您可以简单地修补上面的getValidElements
方法(在删除/添加剥离标记之前添加一些用户权限检查),但这还不够:这只会改变TinyMCE行为(客户端),但恶意用户可以访问您的网站禁用了TinyMCE(非常简单,只需在浏览器中禁用JavaScript),然后上传不带这些过滤器的自定义HTML。
所以:最好的办法是使用相同的权限检查自定义safe_html
转换。在这里使用猴子修补添加新内容的简单方法是注册一个新的plone.outputfilters
适配器,如下所述:https://pypi.python.org/pypi/plone.outputfilters#adding-a-custom-filter
答案 1 :(得分:0)
简单地修补safe_html不会有多种原因:
html不仅会在保存时进行过滤,也会在显示时进行过滤。这意味着管理员会看到你的iframe但普通用户不会。
过滤器仅在第一次显示时执行一次,然后缓存一小时。添加区分角色的代码对第二个访问者没有影响。