wordpress脚本 wordpress建站插件

如何修复wordpress4.0跨站脚本执行漏洞

WordPress是著名的开源CMS(内容管理)系统。近日,在4.0版本以下的Wordpress被发现存在跨站脚本漏洞(XSS),新版本的Wordpress已经修复了这些问题。为了安全起见,建议站长们尽早更新到WP新版本。 该漏洞是由芬兰IT公司Klikki Oy的CEO Jouko Pynnonen发现的,只存在于Wordpress4.0以下的版本中。据调查得知全球有86%的Wordpress网站都感染了这一漏洞,也就意味着全球数百万的网站都存在着潜在的危险。一些知名网站也使用了Wordpress软件,如Time、UPS、NBC Sports、CNN、Techcrunch 和FreeBuf:) 漏洞概述 WordPress中存在一系列的跨站脚本漏洞,攻击者利用跨站脚本伪造请求以欺骗用户更改登录密码,或者盗取管理员权限。 如Jouko Pynnonen解释道: 当博客管理员查看评论时,评论中的漏洞代码会自动在其Web浏览器上运行。然后恶意代码会偷偷接管管理员账户,从而执行管理员操作。 为了证明他们的观点,研究人员创建了一个漏洞利用程序(exploits)。利用这个exploits,他们创建了一个新的WordPress管理员账户,改变了当前管理员密码,并在服务器上执行了攻击PHP代码。 漏洞分析 问题出在wordpress的留言处,通常情况下留言是允许一些html标签的,比如、、等等,然而标签中有一些属性是在白名单里的,比如标签允许href属性,但是onmouseover属性是不允许的。 但是在一个字符串格式化函数wptexturize()上出现了问题,这个函数会在每一个留言上执行,函数的功能是把当前的字符转义成html实体,比如把“”转义为“”。为了防止干扰html格式,wptexturize()首先会以html标签为标准把文本分成若干段,除了html标签,还有方括号标签比如[code]。分割的功能是由下列正则表达式完成的。 在wp-includes/formatting.php代码的第156行: $textarr = preg_split(‘/(.*|\[.*\])/Us’, $text, -1, PREG_SPLIT_DELIM_CAPTURE); 但是如果文章中混合着尖括号和方括号[]会造成转义混淆,导致部分代码没有转义。 攻击者可以通过这个漏洞在允许的HTML标签中注入样式参数形成XSS攻击,比如通过建立一个透明的标签覆盖窗口,捕捉onmouseover事件。 漏洞利用测试 以下代码可以用于测试 [[” NOT VULNERABLE] 修复建议 这一漏洞很容易被攻击者利用,WordPress官方建议用户尽快更新补丁,而在新版WordPress 4.0.1已经修复了所有的漏洞。 WordPress官方于11月20日发布了官方补丁,目前大多数的WordPress网站上都会收到补丁更新提醒通知;如果有一些其他原因使得你无法更新补丁,Klikki Oy公司还提供了另外一个解决方案(workaround)可以修复该漏洞。 wptexturize可以通过在wp-includes/formatting.php开头增加一个返回参数避免这个问题: function wptexturize($text) { return $text; // ADD THIS LINE global $wp_cockneyreplace; 额外提醒 如果你使用的是WP-Statistics WordPress插件,你也应该更新补丁。因为这些插件上也存在跨站脚本漏洞,攻击者同样可以实施攻击。

创新互联主营滨海新区网站建设的网络公司,主营网站建设方案,APP应用开发,滨海新区h5微信平台小程序开发搭建,滨海新区网站营销推广欢迎滨海新区等地区企业咨询

如何去除WordPress脚本和样式表的版本号

WordPress中使用wp_enqueue_script()和wp_enqueue_style()引入js脚本和css样式表时,会生成一个版本号,如果你不亲自指定,版本号会是WordPress的版本号,比如3.4.2。版本号有好处,可以强制浏览器更新脚本,但有些SEO检测工具会认为带有版本号是非静态化的表现,那么这里有一个去除版本号的方法。

在主题的functions.php中加入如下代码,就可以去除版本号

function sb_remove_script_version( $src ){

$parts = explode( '?', $src );

return $parts[0];

}

add_filter( 'script_loader_src', 'sb_remove_script_version', 15, 1 );

add_filter( 'style_loader_src', 'sb_remove_script_version', 15, 1 );

要注意的是,只有通过WordPress的方式引入脚本才会产生版本号,如果自己硬编码进去,这段代码是不起作用的,当然,不推荐硬编码js文件。

一点小提示,当你需要用到W3 Total Cache插件时,最好用wp_enqueue_script()引入脚本,可以使用自动Minify的功能直接将所有脚本合并成一个文件,并且不要将WordPress默认的jquery替换成google的或者其它的外部jquery,否则当开启W3 Total Cache的自动Minify功能时,可能导致脚本运行错误。

如何在WordPress文章内插入简单脚本

在WordPress写文章的时候,如果想插入一点简单的脚本,例如: javascript:tucao() 或者 onclick=”tucao()” 插入这样的代码,但是会被WordPress的安全机制自动过滤成: javascript:void(0) 和 onclick=”" 那如何解决以上问题呢?以下是解决方法:1.打开wp-include目录下的formatting.php文件,注释掉大概第2321行 $safe_text =str_replace(“n”,‘n’,addslashes( $safe_text ));2.上传后,刷新后台,保存刚才保存不上的文章。


网站栏目:wordpress脚本 wordpress建站插件
文章网址:http://azwzsj.com/article/ddcidip.html