为什么允许在注释中使用脚本命令?

时间:2018-08-17 作者:Rick Hellewell

我注意到,如果您是管理员或编辑器,您可以在comments (不在页面/后期编辑器中)对于管理员/编辑器角色:

<script>alert("Danger, Wil Robinson!");</script>
这方面似乎没有太多文档,这是允许的unfiltered_html (参见答案here ).

仅对管理员/编辑角色启用;其他角色将忽略注释中的任何脚本命令。但这似乎是一种安全风险。

其他人如何看待允许在注释中使用脚本命令的这种可能的安全风险?

Added

记住,这个问题是关于评论的,以及评论中的恶意脚本如何影响访问者。

在你自己的网站上尝试一下。不要登录,成为“随机”未经身份验证的访问者。将上述脚本命令放入注释中并保存。现在刷新页面,将显示警报消息(假设您没有禁用Javascript)。

您刚刚证明,评论中的恶意脚本会影响您网站的访问者。它可能不会影响您的网站,但会影响您网站的任何访问者。

现在,一些网站允许在页面/帖子中使用脚本可能会很有用。这不是这里的问题。问题是评论中的脚本,这可能会对访问者造成危险。

PROOF OF CONCEPT (added)

查看此页https://cellarweb.com/fstraptest/this-is-a-new-post/#comment-502.基本WP,无插件激活,2017主题。添加了一个新帖子。已注销。已打开新浏览器窗口(非选项卡)。已将网站加载为“访问者”(无登录)。看看那个帖子。然后对帖子发表评论;保存了它。看到弹出窗口。重新显示帖子。看到弹出窗口。

如果您转到该链接,您将看到“Danger Wil Robinson”弹出窗口。

1 个回复
SO网友:Mark Kaplun

这本身并不是“安全风险”,因为管理员可以通过FTP添加自己喜欢的任何愚蠢的PHP代码,这通常会比一些JS造成更大的破坏。如果一个管理员做了愚蠢的事情,那么你就不应该做什么,因为毕竟这是他的网站。

也许值得一提的是,插入随机JS的安全风险是什么。基本上,如果您可以将JS插入页面(在本例中通过注释),您的JS可以读取与身份验证相关的cookie并将其发送给您。现在剩下的就是“欺骗”管理员访问该页面,您就可以获得cookie,从而可以作为管理员访问该站点。

好吧,这不是一个安全风险,但听起来确实很难听,我们不能过滤掉吗<script> 对每个人来说?问题是,您可能想做一些不那么琐碎的事情,比如嵌入一个youtube视频,共享代码可能需要加载一些脚本(如果YT现在的工作方式可能是一个糟糕的例子)。

评论表单的核心缺点是,随机用户甚至可以尝试提交任何包含HTML的内容,这不仅是一个潜在的安全风险,而且对99%的用户(即使是技术上适应的用户)来说也是一个糟糕的用户体验。在一个理想的世界中,潜在的不安全的东西只能从管理端获得,但这艘特殊的船早就开航了。

结束

相关推荐

Delete comments function

我做了一个功能,向登录用户显示她的所有评论,并允许她通过与打印的每个评论相关的删除按钮单独删除这些评论。该功能起作用,但在执行表单操作后,刷新时页面仍会显示已删除的注释,并且仅当您再次转到该页面(不是刷新,而是通过单击浏览器地址栏上的返回键)时,页面才会显示已批准的注释。如何解决此问题?代码如下: function custom_delete_post_comment() { $comment_id = comment_ID();