2014-11-27 3 views
0

Примечание: пример ниже - это просто вымышленный и упрощенный пример!Безопасны ли события на основе Meteor.JS?

Скажите, что у меня есть две кнопки в приложении Meteor.JS: один из них согласен, что добавляет +1 к счету определенного элемента, а другой - к несогласованному, который вычитает один из определенного элемента.

Если я использую для этого события на основе классов (чтобы согласиться, один из них не согласился), можно ли пользователю вручную изменить условия класса и переназначения, заданные в шаблоне?

<button class="agreement tiny"> 

Agree! 

</button> 

Если пользователь нажимает на эту кнопку, он получает возможность снять свое согласие:

<button class="remove-agreement tiny"> 

Remove agreement! 

</button> 

Мой вопрос заключается в том, возможно ли пользователю вручную изменить класс remove- кнопку соглашения от remove-agreement до agreement, чтобы он мог добавить несколько + 1 сек. Это возможно? Я пробовал это сам и, похоже, не работает, но я (очевидно) не эксперт в этом.

EDIT: он действительно работает. Означает ли это, что для этого нужно реализовать безопасность на стороне сервера?

+1

Не доверяйте данным, отправленным клиентом, они могут легко обмануть ваш сервер, если клиент нажал кнопку, которая скрыта или что ему не следует нажимать ... что, если они прочитают ваш код и Вызывается метод Meteor и решает вызвать его прямо из консоли браузера? Внедрить систему, основанную на пользователях, для обеспечения безопасности. – saimeunt

ответ

1

Да, пользователь может удалить класс. Я делаю это каждый раз, когда сайт просит дать Facebook Like. Это займет 10 секунд, чтобы удалить display:none. 10 секунд для конфиденциальности - это нормально для меня.

Каждый раз, когда клиенты запрашивают вставить/обновить/удалить что-то, вам необходимо подтвердить это.

У этого есть очевидный сценарий: вам нужно сохранить голосование пользователя, и каждый раз, когда пользователь пытается голосовать/понижать голос, вы проверяете, проголосовали ли пользователи. Если по какой-либо причине пользователь пытается проголосовать или более чем 1 раз, вы можете зарегистрировать это, проанализировать и решить, следует ли запретить пользователя.

Вы можете использовать allow/deny rules, чтобы проверить это или даже simple server method. Не забудьте проверить/заблокировать операции CRUD базы данных, которые поступают от клиента, иначе ... вы ввернуты!