Небезопасен ли пакет meteor aldeed: autoform?

#meteor #meteor-autoform

#метеор #meteor-autoform

Вопрос:

По-моему, изучая Meteor последние недели, пытаясь создать простой crud с некоторой проверкой, я наткнулся на что-то.

До сегодняшнего дня я пытался сохранить свою схему сбора на стороне сервера, и у меня были некоторые трудности с проверкой схемы сервера на клиенте, поэтому я добавил aldeed:autoform.

Когда я начал играть с autoform, после нескольких ошибок я с удивлением понял, что схема коллекции ДОЛЖНА быть определена на стороне клиента, чтобы работать должным образом.

Разве это не кажется немного опасным? Должна ли схема ваших коллекций публиковаться на клиенте?

Возможно, это глупый вопрос, я не уверен. Я заранее извинюсь: D

Комментарии:

1. Я так не думаю. Если бы вы не использовали autoform, у вас был бы некоторый код, обеспечивающий проверку формы, который сообщал бы хакеру, какие элементы требуются. Я не думаю, что это означает, что это дыра в безопасности

2. Но этот код, обеспечивающий проверку, будет «защищен» на стороне сервера, а не на стороне клиента, предоставляя потенциально конфиденциальную информацию.

Ответ №1:

Вам нужно будет определить схему так, чтобы она была доступна как клиентскому, так и серверному коду. Это связано с тем, что проверка формы выполняется один раз на стороне клиента (которая всегда должна рассматриваться как небезопасная, поскольку она доступна в консоли браузера, как показано ниже) и один раз на стороне сервера. Проверка на стороне сервера всегда считается безопасной. Таким образом, даже если вам удастся каким-либо образом управлять формой из браузера, если проверка не соответствует схеме, она отфильтровывается на стороне сервера, пока схема присоединена к коллекции. Я считаю, что таким образом это безопасно.

введите описание изображения здесь

Страница Meteor autoform предлагает вам удалить небезопасные и добавить правила разрешения / запрета.

Обязательно определите надлежащую защиту вставки для ненадежного кода, если вы удалили insecure пакет. Вызовите allow / deny или используйте ongoworks:security.

Шаги, которые я выполняю, чтобы обеспечить безопасность (пожалуйста, имейте в виду, что могут быть лучшие способы, поскольку я также довольно новичок в meteor universe)

  1. Удалите автоматическую публикацию и небезопасный.
  2. Определите схему с помощью правил разрешения / запрета.
  3. Используйте методы сервера meteor для вставки / обновления.
  4. Используете ли вы схему, прикрепленную к коллекции, или схему, чтобы просто проверить форму и на самом деле не хотите, чтобы она была прикреплена к коллекции, убедитесь, что вы вызываете [check()][4] серверный код, чтобы после отправки формы на клиентском конце на сервер сервер дополнительно явно проверял, соответствует ли формаданные по-прежнему соответствуют схеме, и никто или что-то ненадежное не вводило / не изменяло их. Если им манипулируют, проверка на стороне сервера автоматически отфильтровывает дополнительные дополнения к переданным ему данным.

Это то, что происходит, если кто-то добавляет дополнительные данные, которые не существуют / не соответствуют определению схемы:

введите описание изображения здесь

Комментарии:

1. Спасибо за длинный и подробный пост, но я все еще думаю, что предоставление вашей схемы клиенту может предоставить информацию, которую можно использовать. Я собираюсь написать новый вопрос, поскольку этот вводит в заблуждение.