Как сделать систему последовательного кода PHP - PullRequest
0 голосов
/ 04 сентября 2011

Я думал о реализации базы данных MySQL с действительными последовательными кодами, которые будут проверяться на основе пользовательского ввода и разрешать использование приложения, если проверка вернет true, но я знаю, что это слишком просто, поскольку пользователь (который будет использоватьприложение на основе локального хоста) может легко взломать базу данных и добавить свои собственные сериалы (или, по крайней мере, сказать кому-то, кто имеет базовое понимание PHP и SQL, если они думают, что приложения выходят из «волшебной коробки»).

Поскольку я не делал этого раньше, есть ли популярный подход?Или еще лучше, если бы вы дали мне несколько идей.

Ответы [ 6 ]

1 голос
/ 04 сентября 2011

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

Проблема заключается в том, что поскольку файлы php легко изменить, если они не зашифрованы и не закодированы с помощью такого инструмента, как Zend Guard, пользователь может обойти это.изменив вызов, чтобы не было сделано, и всегда возвращать истину.Или же они могут изменить файл hosts своего веб-сервера, перенаправить запрос на принадлежащий им сервер и поместить туда файл, который подделывает ваш чек и всегда возвращает true.

Чтобы предотвратить это, вам придетсяи зашифруйте ваши php-файлы, и внедрите систему «вызов-ответ» для проверки их серийного номера.

Если я понимаю, что вы имеете в виду.: -Р

1 голос
/ 04 сентября 2011

AFAIK Если у них есть исходный код PHP в виде простого текста, они могут обойти любые средства защиты, которые вы установили.

Тем не менее, существуют службы, такие как ionCube (google it), которые запутывают (компилируют?) Код и требуют ключ (с какого-нибудь удаленного сервера), чтобы разблокировать код для выполнения.

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

0 голосов
/ 04 сентября 2011

Никогда не будет 100% безотказного подхода. Все, что угодно может быть переработано, если у вас есть время и ноу-хау.

Но что вы можете сделать, чтобы максимизировать свои шансы не быть взломанным, это использовать какой-то прекомпилятор / обфускатор, например Zend Guard или ionCube другие ) для защиты вашего кода. Большинство (все?) Из них поставляются с предварительно созданными функциями лицензирования, что, безусловно, является рекомендуемым подходом.

Проблема в том, что они не бесплатны ...

EDIT

Думая об этом, вы могли бы реализовать что-то подобное самостоятельно, безопасно, в очень избранных обстоятельствах. Если вы разрабатываете что-то, из чего вы можете распространять HipHop двоичные файлы, вы можете реализовать что-то, не опасаясь, что это может быть взломано людьми, которые не совсем серьезно знают, что они делают. HipHop свободно доступен для скачивания с github .

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

0 голосов
/ 04 сентября 2011

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

Сначала я бы добавил слой между базой данных и клиентом. Удаленный http-интерфейс, такой как SOAP или что-то с использованием json.

Вы должны зашифровать соединение с ним (https) или, по крайней мере, использовать какой-то подход ответа на запрос.

Но когда ваше приложение с открытым исходным кодом, вы всегда сможете его обойти. И если это не так; -).

0 голосов
/ 04 сентября 2011

Это на самом деле лучше для вас, я думаю.Посмотрите здесь http://dev.michaelnorris.co.uk/tests/random_password.php

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

0 голосов
/ 04 сентября 2011

Взгляните сюда http://dev.michaelnorris.co.uk/tests/random_string.php

<?php 
function makePin($lenth=10) { 
// makes a random alpha numeric string of a given lenth 
$aZ09 = array_merge(range('A', 'Z'), range('a', 'z'),range(0, 9));
//$aZ09 = array_merge(range('A', 'Z'), range(0, 9)); 
$out =''; 
for($c=0;$c < $lenth;$c++) { 
   $out .= $aZ09[mt_rand(0,count($aZ09)-1)]; 
} 
return $out; 
}
$obscure = makePin();
echo $obscure;
?>
...