да. я вот позавчера тему создал https://searchengines.guru/ru/forum/1096624
токен можно перехватить
Так токен должен быть одноразовый. Его перехват ничего не даёт.
Мда, про блокировку РКН я вообще не подумал.Яндекс тоже не пропускает, правда с 554-й.Таки ушёл на зохо.
начальник темы пояснил, почему для его задачи такой способ не годится
Вероятно я туплю, но кроме открытости php-кода я не вижу претензий от автора.Однако, чем открытость кода
if (isset($_GET['token'])) { $token = escapeshellarg($_GET['token']); shell_exec("/path/to/your_program $token");}
может скомпрометировать алгоритм формирования токена?
так это же просто реклама в интерфейсе, разве нет? у кого сейчас нет антибанера в браузере?
Да, в тексте писем вроде не добавляет, по крайней мере пока.
но 1-я же проверка привела к 550-му
<***>: host emx.mail.ru[94.100.180.180] said: 550 Message rejected. Protonmail is blocked (in reply to end of DATA command)
я так понимаю, отключить эту "защиту" нельзя.
немного уточню. мне нужно запускать программу именно с сайта http://site.ru/script.php и файла script.php . а не с консоли bash sh ...
Просто удлинили проблему на 1 шаг1) вызвали скрипт с токеном сгенерированным по своему алгоритму (в примере делаем примитивные одноминутный токен - умножаем текущий час 9 на минуту 21)
curl http://site.ru/script.php?token=189
2) В скрипте вызываем программу и передаём токен
3) Вычисляем токен и выполняем / не выполняем код
int main(int argc, char *argv[]) { // без аргументов завершаем с ошибкой if (argc != 2) { return 1; } // получаем время time_t now = time(NULL); struct tm *tm_struct = localtime(&now); int hour = tm_struct->tm_hour; int minute = tm_struct->tm_min; // Вычисляем токен и проверяем его if (hour * minute == atoi(argv[1]) { // выполняем свой код } else return 2; // с неверным токеном завершаем с ошибкой return 0;}
каким скриптом. там код открытый. таким образом можно программу запустить и з 2.php просто добавив сверху етот алгоритм
если у вас подразумевается открытость алгоритма кодирования злоумышленнику, то никакой защиты от него вы не придумаете
ето же не значит что я myprogram запустил с script.php
может в терминале . а может и з другого скрипта . 1.php
ключом может быть некий хеш, создаваемый скриптом, а-ля md5(pid) - алгоритм придумайте любойего же и сверяйте в программе
как мне в myprogram определить что его запустил именно script.php а не кто то другой.
В скрипте передайте ключ в качестве аргумента
exec('/path/to/your_program --from-script script1.php');
в программе проверьте соответсвие аргумента --from-script его значению
У них же вроде больше нет бесплатных тарифов для новорегов.