【问题标题】:MongoEngine: if and how to sanitize search & data input?MongoEngine:是否以及如何清理搜索和数据输入?
【发布时间】:2020-04-24 06:11:56
【问题描述】:

我在一个项目中使用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 似乎没有讨论这个。

【问题讨论】:

    标签: python-3.x mongoengine input-sanitization


    【解决方案1】:

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

    【讨论】:

    • 如果我理解正确,只需确保字符串数据类型对于搜索和插入都足够?
    • 我相信是这样,在插入过程中,mongoengine 会应用一些验证(基于字段的类型),但一般建议是始终清理用户输入
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 2014-10-31
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多