MongoEngine: если и как обезопасить поиск и ввод данных? - PullRequest
0 голосов
/ 06 января 2020

Я использую 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')

Нужно ли проводить какую-либо очистку входных данных? Различно ли это для обоих случаев? документация , похоже, не обсуждает это.

1 Ответ

1 голос
/ 08 января 2020

При сохранении документа MongoEngine запустит проверку поля. Если вы используете user_input в запросе, вам нужно санировать его, в этом случае я считаю, что достаточно обеспечить, чтобы user_input была строкой (если вас беспокоит внедрение). Как обсуждено здесь , инъекция может быть достигнута с помощью словарей, поэтому ее важно дезинфицировать

...