Итак, как приложение flash сообщает серверу, что головоломка решена? Используя TamperData , злоумышленник может перехватить / изменить / воспроизвести этот запрос, даже если он выполняется по протоколу HTTPS. Если вы попытаетесь вставить секрет, его можно получить, декомпилировав приложение флэш-памяти или даже отладив флэш-память, пока ваше приложение работает, и найдите секрет в памяти.
Обычно я бы сказал, что то, что вы пытаетесь сделать, невозможно. Но давайте повеселимся с этой загадкой мета-безопасности. Это головоломки, верно? Таким образом, это означает, что есть только 1 решение этой головоломки. Таким образом, вы можете использовать некоторую криптографию для решения этой проблемы, решение очень похоже на код аутентификации сообщений , но это немного другое.
Когда головоломка запускается, приложение флэш запрашивает кусочки головоломки. Назначьте случайное число каждой части головоломки вместе со случайным местоположением, которое передается на сторону вспышки. Когда она решена, вы объединяете каждое число в зависимости от того, где находятся кусочки головоломки. Так что на стороне вспышки всегда объединяйте числа слева направо, а затем вниз. Когда флэш-клиент получает головоломку, числа будут не в порядке, единственный способ, которым они будут в правильном порядке, - это если головоломка была решена. Когда все решено, возьмите хеш из объединенных чисел. В идеале вы должны использовать sha256, хотя md5 будет работать, потому что злоумышленник не знает значения хэша, поэтому столкновения не вступают в игру
Сервер знает, когда началась головоломка, потому что флэш-сторона запрашивала числа, соответствующие кусочкам головоломки. Сервер знает, когда загадка была завершена, потому что флэш-сторона передала хеш решения. Сервер знает, что такое хеш решения, заблаговременно, потому что он присваивает номера. Это очень похоже на макинтош, но разница в том, что секрет в том порядке, в котором находятся кусочки головоломки.