Разработка для серьезных организаций. Файл конфигурационный. Злоумышленник может саботировать всю систему, если его не защитить как следует. Поэтому можно изменить "лицензия" на "индивидуальные настройки". Суть одна и та же - для каждого компьютера только свой файл.
Пришла идея в голову сразу после поста:
хранить хеш времени установки программы (первого запуска) и записать его в файл лицензии в зашифрованном виде, в качестве дополнительного блока
dimonchik2013, был ли введен режим коммерческой тайны относительно исходного кода в тот момент, когда этот сотрудник работал? подписал ли какие-то бумаги касательно того, что он делает - является коммерческой тайной
нет?
вот тебе и никакой коммерческой тайны и нет.
tcp + udp
вот примерно то о чем речь: рассылка пакетов с обновлением состояний с сервера на клиент относительно каждого юнита
например, теоретически, пакет CLIENTPACKET_MOVE - отправляется с сервера на клиент, в нём содержится информация о перемещении какого-нибудь юнита с сервера на экран.
Сервер управляет всем, а не ваш клиент, ваш клиент только отображает то, что решил показать сервер. От вас зависит только куда пальцем нажмете и когда. И в этот момент отправляется SERVERPACKET_SPAWN - где передается серверу информация о юните, что вы заспавнили нового персонажа и такой-то точке, и сервер уже все просчитывает и отправляет вам состояние об этом юните в CLIENTPACKET_MOVE
запущено 1000 инстансов боев, не сильно ли это тяжело?
ну как сказать. для одной машины может и проблема, а для двух уже нет. тем более бои ограничены по времени.
Это чисто теоретическое предположение, для того, чтобы понять как и что там на самом деле - начните ревёрсить.
посмотрите в сторону шаблонизаторов twig, smarty, blade и т.д.
либо напишите свой, который вместо {id} будет подставлять цифру.
потому что то что вы делаете - это крайне плохой уровень. Учитесь делать правильные вещи сразу
Кстати, можно использовать не только <?php , то и <?=
Соглашусь с джентельменом выше. Какая-то ерунда абстрактная написана, даже рассуждать не над чем.
Но постараюсь вникнуть в ситуацию:
Просто надо архитектуру проекта в виде диаграммы вынести на бумагу, прописать связи, что с чем, и в каждой связи думать "а как я здесь могу сломать систему?".
для успешного ответа на этот вопрос необходимо знать векторы различных атак.
Предположим, что есть внутренний сайт c RCE, где хранятся сертификаты пользователей. Предположим, что вход в супер-сверх-защищено-закрытую зону (другой сайт) осуществляется через ЦП.
Таким образом, исполнив RCE на сайте, злоумышленник сможет скачать ваш сертификат ЦП, дальше войти на сайт по ЦП, получить права пользователя ЭЦП и передать ложные данные.
В этой схеме уязвимое место: при эксплуатации RCE можно получить ЭЦП и вход только по ЦП.
В этом случае надо добавить авторизацию по одноразовому паролю, какому-нибудь Google Authenticator для владельца ЭЦП. И спрятать сертификаты куда-то в другое место, где нельзя их "просто так" достать. Например, вместо хранения на сайте ЦП, хранить их дайджесты.
Появляется новое уязвимое место: брутфорс одноразового пароля и атаки на хеши.
Решаем так: в случае если код с GA не совпал 10 раз - блокируем сертификат пользователя и передаём информацию безопасности, а она в свою очередь обратиться к владельцу ЦП с вопросом: "почему вы 10 раз не смогли войти?".
А решение атак с хешами - целый раздел в криптографии
до паранойи доводить конечно не надо, ну вот пример, показывающий, что зная векторы атак - знаешь как и защититься от них
атака по времени - это имеется в виду, что на каждое математическое действие при сравнении строк тратится определённое время. и вот если злоумышленник знает точно затраченное время, то он сможет подобрать такую же комбинацию, которая будет сравниваться точь-в-точь столько же секунд, сколько и основная строка или увеличить время работы какой-то проверяющей функции. Соответственно, если время увеличилось, значит первый символ подошел
если сможете реализовать быструю функцию, которая вне зависимости от входящих данных сравнивает эти две величины за постоянное время, то как говорится, флаг вам в руки
password_verify делает это сравнение как раз-таки за постоянное время вне зависимости от входящих данных
конкретно пример 1