在“<>”字符之间添加文本会渲染一个空帖子。(本帖中的示例)

隐藏文本如下:

<OnlyTwentyCharacters>

这会变成一个不允许的 HTML 标签,出于安全考虑会被移除。这不是漏洞。

如果您希望帖子以 < 开头,请使用 &lt;。

3 个赞

感谢解释。我也这么认为。

Discourse 中是否有函数可以简单地移除不允许的 HTML?使用场景是:

在 Custom Wizard 插件中,我们希望禁止用户提交帖子,如果移除这些被剥离的字符后,帖子的总字符数仍低于最小字符限制。

此外,现在想来,这也与 Discourse 相关。如果渲染后的内容少于最小字符限制,禁止提交是否合理?我知道这比听起来要复杂得多。

当我们遇到相同的问题时,我们只需使用 Markdown 将其隔离。

<here is the good stuff>

<here is the sweet stuff>

```<here is the good stuff>```

`<here is the sweet stuff>`

作弊者总会作弊。Unicode 是个庞然大物,存在许多边界情况,人们可以利用它们来模拟看似空白实则非空白的帖子。

这正是 Moderation(审核机制)发挥作用的地方。

我不确定我们是否有可供你使用的钩子(hook),但我想你可以在 StrippedLengthValidator 中插入逻辑来实现。

我原则上不反对在那里添加一个钩子,这样你就可以无需进行“猴子补丁”(monkey patching)就能实现该功能。

5 个赞

已编辑首帖,因为 QAPage 架构验证将其标记为空。

1 个赞

@sam
我们成功向提出疑虑的人解释了这一点。此外,在 Custom Wizard 插件的上下文中,我们跳过了模型验证。

不过,就 Discourse 核心而言,如果帖子的“cooked”版本长度小于 min post length,是否可以考虑禁止提交该帖子?

我不太确定这一点,这对用户来说可能不够直观。确实存在一些边缘情况,其中原始文本比渲染后的文本更长,且这种情况是合理的。

4 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.