chaturanga

Рейтинг
121
Регистрация
22.08.2012
lutskboy #:

да. я вот позавчера тему создал https://searchengines.guru/ru/forum/1096624

токен можно перехватить

Так токен должен быть одноразовый. Его перехват ничего не даёт.

bums #:
это не защита, а protonmail.com в России заблокирован РКН

Мда, про блокировку РКН я вообще не подумал.
Яндекс тоже не пропускает, правда с 554-й.
Таки ушёл на зохо.

Artisan #:

начальник темы пояснил, почему для его задачи такой способ не годится

Вероятно я туплю, но кроме открытости php-кода я не вижу претензий от автора.
Однако, чем открытость кода

if (isset($_GET['token'])) {
  $token = escapeshellarg($_GET['token']);
  shell_exec("/path/to/your_program $token");
}

может скомпрометировать алгоритм формирования токена?

max256 #:

так это же просто реклама в интерфейсе, разве нет? у кого сейчас нет антибанера в браузере?

Да, в тексте писем вроде не добавляет, по крайней мере пока.

но 1-я же проверка привела к 550-му

<***>: host emx.mail.ru[94.100.180.180] said: 550 Message
    rejected. Protonmail is blocked (in reply to end of DATA command)

я так понимаю, отключить эту "защиту" нельзя.

да, вроде по состоянию на 2-е апреля есть бесплатный тариф
https://biz.mail.ru/docs/saas/TariffsPayment/tariffs/index.html
но реклама в письмах... уж лучше буду платить зохо...
lutskboy #:

немного уточню. мне нужно запускать программу  именно с сайта  http://site.ru/script.php и файла  script.php . а не с консоли bash sh ...

Просто удлинили проблему на 1 шаг
1)  вызвали скрипт с токеном сгенерированным по своему алгоритму (в примере делаем примитивные одноминутный токен - умножаем текущий час 9 на минуту 21)

curl http://site.ru/script.php?token=189

2) В скрипте вызываем программу и передаём токен

if (isset($_GET['token'])) {
  $token = escapeshellarg($_GET['token']);
  shell_exec("/path/to/your_program $token");
}

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;
}
lutskboy #:

каким скриптом. там код открытый. таким образом можно программу запустить и з 2.php просто добавив сверху етот алгоритм

если у вас подразумевается открытость алгоритма кодирования злоумышленнику, то никакой защиты от него вы не придумаете

lutskboy #:

ето же не значит что я  myprogram запустил с  script.php

может в терминале . а может и з другого скрипта . 1.php

ключом может быть некий хеш, создаваемый скриптом, а-ля md5(pid) - алгоритм придумайте любой
его же и сверяйте в программе


lutskboy :

как мне в myprogram определить что его запустил именно  script.php а не кто то другой.

В скрипте передайте ключ в качестве аргумента

exec('/path/to/your_program --from-script script1.php');

в программе проверьте соответсвие аргумента  --from-script его значению

bums #:
На biz.mail.ru пара доменов на бесплатных тарифах работают без проблем, доступ и через вебинтерфейс и POP3

У них же вроде больше нет бесплатных тарифов для новорегов.

Всего: 351