Я разрабатываю дополнение к имеющейся у меня системе, которое позволит веб-сайтам моих клиентов извлекать из них данные для отображения на своих сайтах.
В большинстве случаев информация, хранящаяся в системе, не является чувствительной (поскольку она только что опубликована на их веб-сайте), но некоторые пользователи создали таблицы, которыми они хотят управлять в системе.для удобства, но не публиковать на своем веб-сайте - хотя они могут захотеть сделать запрос на него (т. е. проверить, возможно ли, что клиент имеет логин на свой веб-сайт или получить адрес электронной почты).Поэтому мне нужно зашифровать ответы, чтобы уменьшить шансы того, что кто-то получит данные, которых не должно быть.
Мой план состоит в том, чтобы пользователь идентифицировал себя с помощью идентификатора пользователя, открытого ключа и имени.запроса, который они хотят выполнить (который они заранее определили в самой системе) - и запрос примет форму примерно так:
require("backend-api.php");
$myUserID = "bobs-restaurant.com";
$myPublicKey = "sdg136MAGHYasfadgHGQ"; //send this with the request
$myPrivateKey = "adgljavd8i1356avdilj"; //never send this anywhere
$queryName = "LIST_OF_DISHES";
$backend = new backend-api();
$response = $backend->getData($myUserID,$myPublicKey,$queryName);
$list_of_dishes = $backend->decrypt($response,$myPrivateKey);
//user then goes on to use the data in their code or maybe just display it as-is.
Это должно быть просто, потому что пользователилибо они не будут опытными PHP'ерами, либо у них будет мало времени, и они используют систему вместо того, чтобы писать свое собственное решение для управления контентом.
Предполагая, что вышеуказанные ID пользователя и открытый ключ былисовпадение, запрос существовал и возвращал данные - моя система зашифровывала ответ на закрытый ключ, который известен пользователю ($ myPrivateKey) и который известен моей системе, но никогда не передавался между ними взапрос, чтобы он не мог быть перехвачен, и я собирался использовать что-то вроде это обратимое шифрование клаss для шифрования.
Проблема в том, что мне нужно предоставить пользователям класс дешифрования, чтобы они могли получать данные из ответа.
Так что, если г-н Malicious каким-то образом получает ID пользователя и открытый ключ, принадлежащий кому-то другому, и он загрузил копию класса расшифровки из учебного руководства / руководства пользователя на моем системном веб-сайте, я прав, говоря, что ему не нужно будетзнаете закрытый ключ, потому что он мог бы просто разобраться, как его расшифровать, изучив код?
Если ответ да, то что я об этом не подумал, это предотвратит это?