Мы разрабатываем игру iOS, в которой некоторые пользователи, скорее всего, изменят ответы, возвращенные с созданного без сервера сервера backedend, чтобы обмануть (с помощью поддельных сертификатов MITM). Чтобы в какой-то мере противодействовать этому, мы хотели бы включить подпись, которая будет трудно понять. Эта реализация полностью завершена (и работала на Serverless-Offline, но нам нелегко возвращать необработанный JSON из Lambda из-за ограничений в API Gateway. Нам нужно иметь возможность моментального снимка нашего JSON, чтобы обеспечить что строковая версия находится в том же порядке, когда мы берем контрольную сумму. В противном случае она может быть рассчитана по-разному на стороне iOS, где она уже является строкой до того, как она накачивается в объект.Как я могу подписать ответ от API Gateway и Lambda?
Есть ли какой-либо возможный способ возвращает строку и не иметь API шлюз денется
например:
callback(null, flattened_json_string);
дает правильный ответ на Serverless-Offline, поскольку он позволяет вам возвращать строку. Когда на самом деле размещается в API-Gateway, мы получаем что-то спасся, такие как:
"{\"metadata\":{\"cmKey\":\"537d1a54916e56bac1d03478b18575e8c0c74d86\",\"cacheReady\":true,\"serverTime\":1467433541108},\"commands\":[]}"
Я знаю о том, чтобы пройти в блоке, как это, но я не хочу, чтобы быть разобран и вновь строковой и риск порядок меняется из-за контрольной суммы.
Я также знаю, что есть хорошие фреймворки javascript для получения hases объектов, но это, очевидно, недоступна на стороне клиента на iOS.
Можно ли ожидать получения определенных сертификатов с сервера?В случае, когда клиент хочет перехватить трафик и изменить его, обычно легко доверять альтернативный корневой сертификат, который затем подписывает измененные запросы на лету. – David
Если это ваш сертификат SSL или тот, который вы контролируете, то вы знаете [отпечаток сертификата] (http://security.stackexchange.com/a/35694/32112), который для всех практических целей невосприимчив к подделке. Если вы используете общую конечную точку, например 'https: // example.execute-api.us-east-1.amazonaws.com /', тогда информация должна быть достаточно последовательной и предсказуемой, но, по общему признанию, вне вашего контроля. –