因为大象网这个网站不光是给网友浏览,自己也会时不时查看一些记录的心得等,所以有些页面是经常更新的,比如Windows微软原版系统ISO镜像下载,这次更新的过程中发现之前的下载链接有些出了问题,而大象网为了更好用户体验便及时修改了下载链接,而修改的过程中发现了一些问题。
WordPress 这款CMS为了防范SQL注入、XSS等网络安全防范,当用户保存文章内容的同时,会对文章内容进行自动过滤,所以当我插入magnet和ed2k链接的时候就被自动删除掉了,解决这个问题也很简单,我们修改WordPress目录中“wp-includes/post.php”,将相关内容注释掉就行了,但别着急修改,先往下看看再决定。
//$postarr = sanitize_post($postarr, 'db');
而此时如同“我家大门常打开,开放怀抱等你”,WordPress自身的安全措施消失了,所以大象网找到了其他解决方法。
如果你熟悉WordPress的话,肯定对“ wp-includes/functions.php”这个目录并不陌生,而WordPress又列出了可以使用函数“wp_allowed_protocols()”检索的良好协议,我们在这个页面中添加新协议支持就可以了,先来看看原本的页面。
if ( empty( $protocols ) ) { $protocols = array( 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'sms', 'svn', 'tel', 'fax', 'xmpp', 'webcal', 'urn' ); }
在这段代码尾部’urn’ 添加增加需要添加的新协议,比如我需要“magnet和ed2k”这两个协议的支持(尽量多看两眼逗号分号,避免输入错误)。
if ( empty( $protocols ) ) { $protocols = array( 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'sms', 'svn', 'tel', 'fax', 'xmpp', 'webcal', 'urn' ,'magnet','ed2k'); }
我们想要的效果也实现了,不过现在出现了新的问题,我们修改的是WordPress 这个程序所以当每次进行版本升级的同时,“functions.php”这个文件都会被覆盖,所以当升级的时候我们必须要再次手动修改这个文件。
<?php function ss_allow_magnet_protocol( $protocols ){ $protocols[] = 'magnet'; return $protocols; } function ss_allow_ed2k_protocol( $protocols ){ $protocols[] = 'ed2k'; return $protocols; } add_filter( 'kses_allowed_protocols' , 'ss_allow_magnet_protocol' ); add_filter( 'kses_allowed_protocols' , 'ss_allow_ed2k_protocol' );
上面这个解决方案就比较适合我们大象网了,我们既然知道了WordPress中有“functions.php”,那么主题目录中肯定也是有这个目录存在的,毕竟我们修改或升级主题的频率又比较小,所以我们修改“wp-content/themes/你的主题名称/functions.php”这个页面对其增加新协议支持就可以了。