Как избежать проблем с SQL-инъекцией в базах данных CouchDB и noQL?

Мое очень простое в использовании приложение будет использовать PouchDb на стороне клиента и CouchDB на стороне сервера. Каждая запись будет сначала сохранена локально в PouchDB, которая затем будет реплицирована с CouchDB на стороне сервера. Каждый пользователь приложения будет иметь собственную клиентскую базу данных на своем устройстве, а также свою собственную облачную базу данных со своей собственной аутентификацией.

Этот пост (" Архитектура приложения при использовании CouchDB/PouchDB") весьма полезен, но я все еще пытаюсь понять, какие шаги мне нужно предпринять, чтобы обеспечить, по крайней мере, насколько это возможно, чтобы ввод от пользователя не вредил.

Возможно, я делаю больше, чем есть на самом деле, так как вполне вероятно, что любой плохой актер уничтожит только свои собственные данные (и кого это волнует?), Но я все же хотел бы знать, как санировать введенные пользователем данные для база данных noSQL. Опять же, пост, который я цитирую выше, содержит отличную стартовую информацию, но я все еще не могу найти ничего, что давало бы советы о том, что нужно искать, каких персонажей убегать и т. Д.

Из моего ограниченного опыта работы с SQL стало понятно, что вам приходилось наблюдать за тем, кто пытается вставить HTML или какой-либо javascript, но я не знаю, какие последовательности данных могут как-то быть вредными для CouchDB. Одна статья, которую я прочитал, предполагает, что нужно:

  • избегайте создания специальных команд JS, объединяя скрипт с пользовательским вводом
  • проверять пользовательский ввод, используемый в серверных командах JS с помощью регулярных выражений (отличная идея... но как?)
  • избегать оценки использовать json.parse

1 ответ

CouchDb имеет хук проверки в каждой базе данных, который вы можете использовать для проверки или предотвращения обновления документа. Информация об этом есть в официальных документах. Это проектный документ с функцией validate_doc_update, написанной на Javascript и предоставляющей вам исходный и пересмотренный контекст документа, так что вы можете "возвращать" или "выбрасывать" в зависимости от того, какие изменения внесены в документ.

Другие вопросы по тегам