MongoEngine:是否以及如何清理搜索和数据输入?

MongoEngine: if and how to sanitize search & data input?

我在一个项目中使用 MongoEngine,我想知道在创建文档和搜索它们时是否需要以及如何清理用户输入。

例如,当我通过从资源中提供数据来创建文档时,例如抓取的 RSS 提要(使用 feedparser),它们几乎可以将任何类型的字符串作为数据:

RSS(
    rss_link=news.link,
    link=news.feed.link,
    title=news.feed.title,
    subtitle=news.feed.subtitle,
    summary=news.feed.summary,
).save()

或者,当我公开上述集合以供用户查询以查找相关 RSS 资源时:

objects = RSS.objects.search_text(user_input).order_by('$text_score')

是否需要进行任何类型的输入清理?这两种情况有什么不同吗? documentation 好像没有讨论这个。

保存文档时,MongoEngine 将运行 字段验证。如果您在查询中使用 user_input ,则需要对其进行清理,在这种情况下,我相信确保 user_input 是一个字符串就足够了(如果您担心注入)。正如所讨论的 here,可以通过使用字典来实现注入,因此清理

很重要