Надежная связь между вашим сервером и браузером? - PullRequest
1 голос
/ 08 декабря 2010

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

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

Как я - сервер- Вы уверены, что данные, поступающие ко мне из JavaScript - в соответствии с предыдущим сценарием - верны и не изменены?

Ответы [ 2 ]

5 голосов
/ 08 декабря 2010

Простой ответ - , вы не можете , JavaScript - это наименее безопасный механизм в конвейере, которым проще всего манипулировать. Если вы хотите, чтобы он был безопасным, вы никогда не должны полагаться на него в JavaScript.

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

Всегда проверять на стороне сервера, всегда, всегда, всегда.

1 голос
/ 08 декабря 2010

Если вы хотите создать некоторые данные на сервере A, передать их клиенту, а этот клиент дословно передать их на сервер B, то вам просто нужно включить в них хеш-код. Сервер A и B делятся секретом, который они используют в качестве соли. Поскольку клиент не знает этой соли, он не может сфабриковать аутентичные данные для себя.

Обратите внимание, что этот метод сам по себе только дает высокую степень уверенности в том, что сервер A создал данные. Есть и другие уязвимости, которые вам, возможно, придется учитывать, такие как повторные атаки старых данных и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...