В настоящее время я занимаюсь разработкой простых приложений (в ActionScript 3, если это актуально), и я хотел встроить простую систему регистрации, основанную на файле XML (который будет создан сценарием PHP), который позволил бы моим файлам'expire' после определенной даты.
Для меня эта система выглядит правильно, но я хотел бы услышать мнение экспертов на случай, если я упустил что-то очевидное - или я понял это совершенно неправильно.
Основываясь на том, что я прочитал на stackoverflow и других сайтах, я придумал следующую структуру XML:
<LICENSE>
<NAME>Joe Cool</NAME>
<COMPANY>Doggy Dogdog</COMPANY>
<APP>Flash Tester</APP>
<VERSION>1.02</VERSION>
<EXPIRES>01/10/2012</EXPIRES>
<SERIAL>e923b5e370cd3cb7ac72c1482d088bd7</SERIAL>
</LICENSE>
Поле на самом деле представляет собой простой хэш MD5 всех элементов, составляющих лицензию,с добавленной «солью» (которая должна оставаться в секрете), чтобы пользователи не могли создавать свои собственные MD5-хэши.«Расшифрованная» лицензия выглядит следующим образом:
Joe Cool - Doggy Dogdog - Flash Tester - 1.02 - salt - 01/10/2012
При запуске мое приложение загружает данные XML, добавляет «соль» и вычисляет из этого MD5.Затем он сравнит сгенерированный хеш MD5 с хешем, хранящимся в XML.Несовпадение хэша указывает на подделку файла XML.А загруженную дату из XML можно сравнить с текущей датой, чтобы убедиться, что срок действия приложения не истек.
Я знаю, что MD5 не настолько безопасен, и т. Д., Но я не защищаю ядерные бункеры с этим, поэтому яготов обменять безопасность на скорость и простоту.Я попытался сторнировать MD5, полученный из исходной строки, в нескольких онлайн-поисках MD5, и все они до сих пор терпели неудачу.
Наконец, я знаю, что мне придется хранить «соль» где-то в приложении,но я полагаю, что любой, кто действительно решил реинжиниринг, сломал бы любую систему, которую я в любом случае поставил бы на место, так что я могу жить с этой идеей.