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,可以通过使用字典来实现注入,因此清理
很重要
我在一个项目中使用 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,可以通过使用字典来实现注入,因此清理