建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

WordPress 转义评论内容以防止恶意代码

GG网络技术分享 2025-03-18 16:04 0


评论者添加评论时,WordPress默认不会对评论内容中的所有代码进行转义,也就是说评论者在评论中输入了html代码,其他访问者查看的评论是已经解释过的html内容浏览器!

以上可能很抽象,您可以尝试在您的文章中添加以下评论:

<a href="http://www.example.com">送钱啦</a>

添加评论成功后,看到“汇款”的链接了吗? 你点击看看效果如何。 如果你没有看到“Send Money”链接而是上面的html代码,恭喜你,你的博客很安全,你可以阅读以下内容。

其实上面的代码只是一个超链接,没有任何恶意。 但是大家要提高警惕,不是所有的评论者都是善意的,他们可能会在评论内容中添加恶意代码(典型方式:广告链接等)! 此外,WordPress 2.9.2 及以下版本存在一个漏洞,允许博客管理员用户在评论中添加跨站攻击代码。 这意味着管理员可以对博客进行跨站攻击。 当然,你可能会问,博客管理员怎么能攻击自己的博客呢? 试想一下,如果您的博客管理员帐户被黑了怎么办? 但是这种可能性很小。

解决方案

就算你的博客管理后台的管理员身份被人破解了,一般他也不会同时破解你的网站空间ftp账号,所以他无法更改你的网站文件,你可以更改WordPress源文件代码进行过滤评论,所以不管是谁,评论都会被过滤掉。 打开当前使用的主题目录下的functions.php,替换第一个

<?phpfunction mobantu_code_escape( $incoming_comment ) {    $incoming_comment = htmlspecialchars($incoming_comment, ENT_QUOTES);    return $incoming_comment;}add_filter( 'comment_text', 'mobantu_code_escape' );

add_filter( 'comment_text_rss', 'mobantu_code_escape' );

上面的方法是对注释内容中的代码进行转义,这样浏览器就不会解释这部分代码,代码起不到任何作用,可以直接看到注释中的代码。 这个改动的好处是可以在评论中展示代码,可以看到谁在评论中添加了恶意代码。 如果你想去掉所有的代码标签,只留下文字内容,请将上面的代码改成:

<?php 

function mobantu_code_escape( $incoming_comment ) {    

$incoming_comment = strip_tags($incoming_comment);    

return $incoming_comment; } add_filter( 'comment_text', 'mobantu_code_escape' ); add_filter( 'comment_text_rss', 'mobantu_code_escape' );

关于strip_tags过滤功能,可以看PHP strip_tags文档

总之,为了您网站的安全,不要相信任何用户输入的内容!

标签: WordPress 教程

提交需求或反馈

Demand feedback