Как реализовать ключ API в программном обеспечении PHP? - PullRequest
4 голосов
/ 14 декабря 2010

Я распространяю созданный PHP плагин, такой как плагин Wordpress, но я хочу реализовать для него ключ API, и пользователям потребуется ввести ключ API, чтобы разблокировать его, чтобы он работал.

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

Спасибо ..

Ответы [ 4 ]

6 голосов
/ 14 декабря 2010

Не думаю, что вы понимаете, что такое ключ API.

Ключ API - это ключ, который позволяет вам или сценарию получать доступ и взаимодействовать с API или онлайн-службой.

То, что вы, похоже, описываете, это какой-то лицензионный ключ, который может помешать пользователю использовать ваш скрипт без какой-либо оплаты или регистрации.

В то время как ключ API часто требует оплаты или регистрации, на самом деле это не одно и то же.

Ключи API обычно устанавливаются для отслеживания использования и предотвращения злоупотребления онлайн-услугами и данными.

Похоже, что в вашем случае вы просто пытаетесь ограничить доступ к вашему сценарию.

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

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

Проверка должна быть выполнена удаленно, и должен быть какой-то стимул оставить ее в неприкосновенности (очевидным является доступ к удаленным данным).

1 голос
/ 14 декабря 2010

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

0 голосов
/ 14 декабря 2010

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

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

0 голосов
/ 14 декабря 2010

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

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

Например:

function generate_key()
{
  $serial = sha1(uniqid(rand(), true));
  $checksum = substr(md5($serial), 0, 4);
  return $serial . $checksum;
}

function verify_key($key)
{
  $serial = substr($key, 0, 40);
  $checksum = substr($key, -4);
  return md5($serial, 0, 4) == $checksum;
}

Это очень простой пример, но он просто учебный.

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

Недостатком этого является то, что любой сможет создать действительный ключ, открыв исходный код и найдя validate_key.

Можно сделать так, чтобы он вызывал внешний сценарий verify_key, но стоит ли оно того? Кроме того, вы будете жертвовать временем загрузки страницы для проверки ключа.

Я помню, что у vBulletin была очень простая система взлома лицензий, но у них было скрытое изображение 1x1 в нескольких разделах, что пинговало скрипт в их домене. Используя журналы, они смогли определить, на каких доменах размещались нелегальные копии их программного обеспечения, и просто отправили адвокатское письмо админу.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...