Переходные представления REST

Вы не можете.

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

то, Что Вы хотите сделать, просто мешают достаточно для взламывания для создания его не стоящим проблемы народов.

Некоторые предложения я имею, чтобы Вы помогли защитить свое приложение:

  • Запутывают Ваш код. Dotfuscator имеет свободный выпуск и идет с Visual Studio.
  • Использование общественность/закрытый ключ или асимметричное шифрование для генерации лицензий на продукты. Это гарантирует, что только можно генерировать коды лицензий. Даже если Ваше приложение взломано, можно быть уверены, что они не будут выпускать ключевой генератор для приложения, потому что невозможно инвертировать ключевой генерирующийся алгоритм.
  • Использование сторонний упаковщик для упаковки исполняемого файла.NET в зашифрованное приложение обертки Win32. Themida является одним из лучших. Это мешает людям отразить Ваше приложение в Отражатель.NET и делает это болью для распаковки для инвертирования.
  • Запись Ваше собственное пользовательский упаковщик . Если сторонние упаковщики являются слишком дорогими, рассматривают запись Вашего собственного. Иногда пользовательские упаковщики могут быть очень эффективными, потому что нет хорошо опубликованных методов о том, как распаковать их. Учебное руководство , Как записать Вашему собственному упаковщику , дает тонну хорошей информации о записи Вашего собственного упаковщика Win32.

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

квалифицированные А перепроектируют, может разжечь IDA Pro и часть через Ваше приложение как масло независимо от того, что Вы делаете. Упакованное приложение может быть распаковано, и путаница только препятствует тому, чтобы оно делало его обходом в парке. Вся Ваша тяжелая работа с Вашим сложным кодом лицензии может быть отменена с единственным патчем байта.

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

существуют однако, многие компании там, которые никогда не рисковали бы судебным процессом и счастливо покупали бы лицензии на программное обеспечение и многих пользователей компьютера, которые или не хотят рисковать им, найдите его неправильно, или не достаточно технически подкованы пирату. Это Ваши истинные клиенты, и необходимо сфокусироваться усилия на предоставлении им с хорошим пользователем испытывают и игнорируют людей, взламывающих программное обеспечение.

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

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

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

5
задан Rich Apodaca 20 August 2009 в 22:51
поделиться

4 ответа

Если вы хотите сделать доступными ежедневные отчеты за прошедшие дни, вы можете реализовать его как GET для / daily_reports / 2009/08/20 . Я согласен с Джоном Милликиным в том, что POST здесь не нужен - что-то подобное не обязательно должно быть ресурсом, создаваемым пользователем.

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

РЕДАКТИРОВАТЬ: Хорошим решением может быть объединение двух ответов, в результате чего daily_report / нет. -cache представление данных текущего дня и daily_reports / yyyy / mm / dd кэшируемое представление данных за полный день.

4
ответ дан 14 December 2019 в 01:13
поделиться

Иногда желательно вести учет запросов на отчеты, в этих случаях не является необоснованным отправить POST на ресурс сбора. Это также полезно для длительных отчетов, когда вы хотите обрабатывать выполнение асинхронно. Как долго сервер будет удерживать эти запросы отчетов, зависит от вас.

Я бы сделал что-то вроде

POST /DailyReportRequests

, которое вернет представление запроса, включая параметры, а когда отчет будет завершен, ссылку на результаты отчета .

Другой альтернативой, которая хороша, когда у вас есть набор заранее подготовленных отчетов, является создание ресурса DailyReports, содержащего список предварительно настроенных ссылок на отчеты. Спецификация OpenSearchDescription позволяет вам делать нечто подобное с помощью тега Query.

2
ответ дан 14 December 2019 в 01:13
поделиться

Я думаю подход Грега правильный. Вкратце, я не думаю, что вам следует предоставлять ресурс / daily-report , который изменяется ежедневно, потому что запуск отчета во вторник в 11:59 приведет к другим результатам, чем запуск его в среду в 00: 01, что может быть: а) сбивать с толку клиентов, ожидающих того же ресурса, и б) не позволяет клиентам получать данные за предыдущий день по прошествии дня. Вы должны предоставить уникальный идентификатор ресурса для каждого доступного ежедневного отчета, чтобы клиенты могли получить доступ к необходимой информации в любое время.

1
ответ дан 14 December 2019 в 01:13
поделиться

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

GET /daily-report/

200 OK
Pragma: no-cache
<daily-report for="2009-04-20" generated-at="2009-4-20T12:13:14Z">
    <!-- contents of the report here -->
</daily-report>

В ответ на ваше изменение: если вы отправляете POST описание отчета по URL-адресу и в результате получаете временный набор данных, это совсем не REST. Это RPC в том же духе, что и SOAP. RPC не является чем-то плохим по своей сути, но, пожалуйста, не называйте его RESTful.

2
ответ дан 14 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: