mediawiki / iframe-tag
1.1.1
2023-10-22 03:17 UTC
Requires
- php: >=7.3
- composer/installers: 1.*,>=1.0.1
- nichework/tag-builder: ^1.5
Requires (Dev)
- mediawiki/mediawiki-codesniffer: ^42.0
- mediawiki/mediawiki-phan-config: ^0.13.0
- mediawiki/minus-x: ^1.1
- php-parallel-lint/php-parallel-lint: ^1.3
- vimeo/psalm: ^5.15
README
本扩展允许您在维基中使用iframe标签,并尝试验证嵌入iframe中的URL。您的维基管理员将能够使用MediaWiki命名空间中的一个页面来更新允许的URL列表。
截至本文撰写时,只支持以下属性
- src
- 资源地址
- height
- 垂直维度
- width
- 水平维度
- allowfullscreen
- 是否允许iframe的内容使用requestFullscreen()
- sandbox
- 控制应用于iframe中嵌入的内容的限制
- style
- 这是唯一支持的全局属性。它通过基础标签构建器类实现。
配置允许的主机
目前,主机名匹配是基于完整域名进行的。如果在配置中提供了允许的主机列表,并且iframe标签的src属性中的主机不在配置的主机列表中,则不会在维基上显示iframe标签。
有两种方法来配置允许的域名。
维基配置
此方法默认启用,但如果您不希望管理员更改允许域名列表,则可以将$iFrameOnWikiConfig设置为false
$iFrameOnWikiConfig=false;
如果您启用此方法,具有editsitejson(默认情况下为管理员和界面管理员)权限的人将能够更改[[MediaWiki:IFrame-cfg.json]]的值。要授权仅三个域名,可以使用以下内容
{ "domains": [ "one.example.com", "two.example.com", "two.example.com" ] }
PHP配置
这是熟悉的“在您的LocalSettings.php中设置PHP变量”方法。
在您的LocalSettings.php中,为变量$iFrameDomains添加一个设置,该变量包含允许的域名数组。例如,要授权与上面维基配置中相同的三个域名。
$iFrameDomains = [ 'one.example.com', 'two.example.com', 'three.example.com' ];
标签的解析方式
使用PHP的parse_url解析src属性。方案已验证为安全(仅允许http
、https
和ftp
),URL的域名将与允许的URL列表(如果指定)进行比较,任何指定的端口将被添加,以及任何路径、查询字符串(?
之后的部分)或片段(#
之后的部分)。
如果在解析iframe标签属性时发现问题,则跳过该属性,将有关错误的信息作为HTML注释插入到页面输出中。
如果src属性有问题,则跳过iframe标签,作者将必须检查HTML源以查找任何问题。