Pull to refresh

Comments 51

Эпплы могли бы добавить шифрование ассиметричным ключом предоставленным разработчиком, и можно было бы обойтись без своего сервера:
1. Разработчик (ну или сам Эппл) генерирует пару ключей, один для шифрования на сервере Эппла, другой для расшифровки в приложении.
2. Используем первую, простую схему, но каждое приложение будет «особенным», так как пара ключей уникальна для каждого приложения.
Тут возникнет проблема со сроком годности ключей. Допустим ключ устарел или разработчик сгенерировал новый ключ — приложения со старым ключом перестанут работать.
С другой стороны фейковому серверу никто не помешает сгенерировать эти ключи и прислать только установленному приложению.
осталось лишь добавить, что трафик между приложением и сервером разработчика тоже нужно каким-то образом защищать.
не забываем, что весь трафик идёт через DNS «плохих ребят», которые вполне легко могут начать делать поддержку вот таких «типа защищённых» покупок для особо популярных приложений.

ну и решение не использовать свой сервер, думаю, чаще всего принимают не из-за лени или глупости, а из банальной бедности (ну, или жадности): мелкому разработчику совсем не хочется поддерживать неубиваемый сервер, способный выдерживать серьёзные нагрузки.
Уже начали поддерживать.
хех, молодцы! вполне логичный шаг.
теперь осталось только собрать урожай гмейл-пейпэл-и-т.п. экаунтов и хорошенько монетизировать всю идею. =)
Нет, монетизировать это дело я не буду. Сбор данных и монетизация полулегальных проектов — дело темное.
Шифрование встроить не сложно, это оставим на домашнее заданее. Ведь делать какое-то универсальное шифрование смысла нету — тем и хороша защита, что у каждого она чем-то отличается.

Учитывая что валидация нужна каждый раз когда происходит покупка или восстановление покупки — о большой нагрузке волноваться не приходится. Обработка запроса занимает 200мс, 1 dyno worker следовательно будет обрабатывать до 5 запросов в секунду. Я буду очень богат, когда приближусь к пределу возможностей бесплатного сервера на heroku. При чем тут бедность мелкого разработчика?
Как по мне, решение для Non-Consumable продаж есть довольно простое: никто не станет вечно пользоваться подставным DNS сервером, а значит программе достаточно раз в N дней обращаться к verifyRecipt странице, если есть подозрения на валидность покупки. Отличить подставную покупку от нормальной можно по app_id, который известен только разработчику.

Причем, если форсировать события и проверять при каждом запуске, мы только разозлим юзера провоцируя пользоваться «плохим» DNS, качать новые хаки, джейлить устройство и пр. Злость юзера уж точно денег не принесет, а так мы как-бы предоставляем ему N дней триала без карательных мер.
Проверять при каждом запуске не надо — только 1 раз в момент активации покупки. Если пользователь смог нас обмануть в этот раз — пусть пользуется бесплатно. Мы не будем его проверять каждый день, это того не стоит.
Зачем это? имхо, ресурсы, потрачены на поддержку своего сервера и соответствующее программирование ниразу не окупят теоретические халявные in-app«ы. Причем люди, которые будут использовать взломанные in-app»ы, никогда их не купят за деньги — и изначально не прибыльны для производителя софта. Так зачем на них еще больше ресурсов тратить?
Какие ресурсы? heroku позволяет создавать такой сервер из одного рабочего dyno — бесплатно.
Ресурсы — это не только деньги.
Один раз потраченное время на исследование проблемы и разработку защиты позволяют экономить деньги каждый месяц. Для меня выбор очевиден.
Я не сказал, что вы поступили иррационально :) Я лишь обратил ваше внимание, что бесплатность heroku не означает отсутствие необходимости тратить ресурсы. В том числе на последующую поддержку. Вполне возможно, что эти затраты окупятся полученным профитом, но возможно также, что не для всех это будет справедливо.
Да, защита от краж в приложении это не фича №1, которую стоит реализовывать в первую очередь. Когда же приложение докажет свою ценность для пользователей — другое дело.
Зачем вообще поощрять читерство через in-appы, ведь это резко укорачивает время, проведенное пользователем в игре? В нормальном сценарии человек запустил игру, играет, добивается в ней каких-то плюшек, ему интересно. И он заинтересован пройти все до конца.
А если ему «вот 1 уровень сразу за бакс», ну купит он, посмотрит новый уровень. Поймет, что ваше приложение — полное говно, либо у него уже не будет азарта/интереса, нужное подчеркнуть.

Если же in-app использовать для чего-то типа DLC — окей, но на сегодня у эппла нет такого понятия «DLC», хотя в своих документах они лукавят. Ни одна из over 100k покупок ничего не скачивала с серверов разработчиков. А это означает, что весь контент уже был у человека на устройстве и он его уже купил (скачал бесплатно, но это уж вы сами выставили такую «цену» вашим трудам).
> Зачем вообще поощрять читерство через in-appы, ведь это резко укорачивает время, проведенное пользователем в игре?
Когда я играл во всякие айгрушки, в основном встречал три варианта in-app покупки — анлок фул версии, типа пользователя нельзя отправлять за пределы приложения даже на страничку апп-стора. Второй вариант — сложность игры нарастает асимметрично и без премиальных плюшек играть вообще невозможно (такой подход лично меня просто выбешивает и как правило вообще удаляю игру, хотя платные игры покупаю регулярно). Третье — это покупки полезных, но не ключевых фишек (вроде дополнительного сундука для шмота) или даже абсолютно бессмысленных вещей, которые не влияют на геймплей (типа симпатичный персонаж, но абсолютно без каких-либо преимуществ).
Короче говоря, почти всегда разработчики игр достаточно пронырливы, чтобы не упустить возможности содрать с пользователя деньги еще раз.
анлок фул версии, типа пользователя нельзя отправлять за пределы приложения даже на страничку апп-стора


in-app для фул версии хорош не тем, что пользователь не отправляется в апп стор, а тем, что у пользователя не меняется приложение, а значет сохраняются его (пользователя) данные, как то записанные задачки, созданные плей-листы, прогресс в игре и т.п.
Зачем вообще поощрять читерство через in-appы, ведь это резко укорачивает время, проведенное пользователем в игре?

Почему вы так уверены про сокращение времени?

но на сегодня у эппла нет такого понятия «DLC»

Есть. Используется в основном у онлайн-изданиях (периодике и книгах). Вам либо «не повезло», либо эти приложения так в лоб не ломаются. Однако вы правы в том, что большинство ин-апов просто открывает возможности приложения уже имеющиеся на устройстве. Не очень понятно, что в этом плохого. В большинстве случаев это сильно удобнее, чем доустанавливать патчи, аддоны или модули.
>Почему вы так уверены про сокращение времени?
Это логично, Если все знаешь, зачем же играть?
>приложения так в лоб не ломаются
Уже пошла положительная динамика, часть не ломается.
>патчи, аддоны или модули
Вот за действительно аддоны, модули и тд я готов платить, а вот за увеличение счетчика какой-то фигни на +100 — нет
а вот за увеличение счетчика какой-то фигни на +100

Люди тратят деньги и на бОльшие глупости, уж лучше пусть на геймдев потратятся :)

А вообще не очень понятна ваша мотивация (кроме известности).
Очень просто. Меня всбесило приложение, я достиг цели. Ну а раз это юридически нигде не описано, то почему бы и не выложить?
UFO just landed and posted this here
Ога, в банке тоже есть скрытые комиссии. В общем обдираловка это, не есть гуд.
Следующим шагом будете грабить банки? :)
Лол, нет конечно, сделаю свой без комиссий^^
UFO just landed and posted this here
UFO just landed and posted this here
Я за. Только я не умею верстать, тем самым я никогда один не запилю красивый сайт для такого сервиса.
Легализация путем замены корневых сертификатов серверов iTunes? Что-то очень шатко звучит такой сервис. Более легальный вариант просто аудит безопасности приложения. Когда составляется договор о неразглашении и эксперту передаются исходники. Он проводит аудит и выявляет слабые места.
А зачем платить Apple чтобы потестировать? Есть же sandbox.
UFO just landed and posted this here
Но зачем?
Это не риторический вопрос, я правда не очень понимаю.
В вашей логике рассуждений есть одно слабое место: «А это означает, что весь контент уже был у человека на устройстве и он его уже купил». Пользователю удобней скачивать игру один раз, поэтому весь контент обычно встраивают в приложение. Если этот контент стоит дополнительных денег — это оговаривается в приложении и об этом известно пользователю. Я не оправдываю такой подход, где без «дополнительных кристаллов» не пройти игру. Вопрос в самом подходе, за что пользователь платил и за что — нет. Особенно это касается расширенной функциональности, т.к. доп. модули нельзя скачивать и встраивать в приложение, это оговорено правилами для разработчиков.
Я не против того что вы работаете над сервисом получения in-app-ов бесплатно. Однако ваши действия вызывают противодействие в виде улучшения защиты приложений и сбора информации о пользователях, которые попробовали эту защиту обойти. И это обратная сторона медали, каждый защищает свои интересы.
Давайте приведу аналогию с Windows Anytime Upgrade. У вас тоже на компе есть все, что нужно и вам нужен всего лишь лицензионный ключ. Такие вот действия требуют лицензирования. In-App покупки же не требуют такого лицензирования (сейчас по крайней мере), так что можете считать, что вы добровольно отдали их пользователю.

Естественно, противодействие в виде улучшения защиты — это же прекрасно!
Кстати, сбор информации о таких пользователях тоже вам на руку, будете знать, что бы юзеры хотели за бесплатно, и улучшите ваши приложения.
in-app покупка и является лицензированием. Ключ — это чек, который присылает сервер Apple. Вы его подделываете. Эдакий сервер-сайд-кейген получается.
Да? Покажите мне документ, описывающий in-app покупку как лицензию.
www.apple.com/legal/itunes/appstore/ru/terms.html почитайте внимательно соглашение. Вы не нарушили ни одного пункта? Вы уверены? Почему тогда скрываете своё имя? Или вы считаете что пока вам не были предъявлены претензии — это значит что вы не сделали ничего плохого?

Я не юрист, но мне кажется что вы ходите по очень тонкому льду.
Я не скрываюсь. Спросите google. Вот несколько цитат:
> В момент приобретения и получения Вами истрачиваемой Покупки внутри приложения, iTunes не будет нести перед Вами ответственности в случае любой утраты, уничтожения, или повреждения
Действие лицензии — не в рамках iTunes, это все в руках разработчиков.

>Все Покупки внутри приложений считаются Продуктами App Store, и Покупки внутри приложений, приобретенные для Сторонних Продуктов считаются Сторонними Продуктами, и соответственно регулируются как таковые для целей настоящих условий и положений.
Стороннее приложение — сторонний продукт.

>Ваша лицензия на любой Сторонний Продукт по настоящему Стандартному ЛСКП или отдельному лицензионному соглашению с конечным пользователем предоставляется Издателем такого Стороннего Продукта
Еще раз про то, что ответственность лежит на руках издателей

> Объём лицензии: Настоящая лицензия, предоставляемая Вам Лицензиаром в отношении Лицензированного приложения,…
Тут упоминание о приложениях.

>Вы не вправе копировать (за исключением случаев, прямо установленных настоящей лицензией и Правилами использования), декомпилировать, осуществлять обратное проектирование, деассемблировать, пытаться извлечь исходный код, модифицировать Лицензированное приложение, его обновления,…
Ничего в процессе работы сервиса не модифицируется, это правда.

>Условия настоящей лицензии распространяются на любые предоставляемые Лицензиаром улучшения, которые заменяют и/или дополняют оригинальное Лицензированное приложение
И тут опять, распространение на изменения/дополнения, однако в процессе использования in-app код приложения не меняется.

Ну и + огромнейший путкт о том, что нет гарантий. Не буду его сюда копипастить, но думаю понятно.
Я не буду с вами спорить, я не юрист. Считаете что ваши действия ничего не нарушают — продолжайте.

Если кто-то из юристов хочет дать свою оценку происходящему — милости прошу.
Спасибо.
Да, мнение юристов хотелось бы услышать.
А если использовать сервер разработчика вместо DNS серверов в момент покупки?
Т.е. сервер разработчика в момент покупки просто отсылает приложению IP** сервера Apple и приложение в свою очередь коннектится не по доменному имени серверов apple, а напрямую к нужному IP.

**(которые резолвятся через нормальные DNS на сервере разработчика)
Этого нельзя делать, т.к. все URLы выдаются девайсу при подключении к тунцу и подписаны эпплом.
+ покупки проходят через их API, и недоступно подключение напрямую
Про SSL то я и забыл.
Я был бы горд, если мое приложение доросло до того, что его начали взламывать.
К сожалению, в данном случае это выглядит иначе. Взламывают соединение с сервером Apple и потом стягивают на халявы инапы всех приложений подряд. Т.ч. конкретно ваше приложение никто не взламывает.
Да и эппл никто не взламывает…
Да, я написал «соединение с сервером Apple». Или я не ухватил суть взлома?
Простой редирект, и все. Это не взлом, я считаю.
Хех, это уже словоблудие.
Sign up to leave a comment.

Articles