motokraft
@motokraft
Кратко о себе

Можно ли как-нибудь защитить класс, свойства, методы и функции от «Reflection»?

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

И вот возникла мысль, а дайка я сам попробую взломать свой код получится ли у меня (так то я знаю как там что выполняется).
И что вы думаете много времени у меня это не заняло. Всего лишь 2-мя строчками кода я смог получить данные которые я так старался скрыть... Вот это я расстроился. Не то что бы мой код гавно, сам код разумеется я не получил но вот только я по большей части старался скрыть значения которые я использую в своем коде.

И так перейдем к самому коду.....
final class SystemHelper
{
    // вот здесь я храню массив с важными данными
    // которые я могу использовать в своем коде
    // но ни как не показываю их юзеру
    private static array $_data = [
        'name' => 'value'
    ];

    // остальная реализация этого класса
}

И вот те самые 2 строки кода которые позволяют вывести значение переменной "$_data" из вне класса даже при условии что она приватная
$ref = new \ReflectionClass('\SystemHelper');
print_R($ref->getProperty('_data')->getValue());

И вот риторический вопрос: какого хера я тратил столько времени что бы скрыть данные от 3-х глаз, когда функционал PHP позволяет отправить все мои старания коту под хвост...

Есть возможность как то защититься от функционала "Reflection" (данный код используется на PHP v8.2)
Речь идет не именно об приватной переменной (это я взял как пример) а об всем классе и его методах.
  • Вопрос задан
  • 157 просмотров
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Чтобы спрятать значение от возможности переопределить есть одно место...
static переменная внутри функции
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы