1. Генерирую список ключей с помощью random seed (из питона, например) 2. Храню в двух копиях на сервере и клиенте 3. http://example.com/exec/?path=[путь до скрипта или команды]&key=[первый ключ из списка] 4. Получаю ответ от сервера 5. Убираю использованный ключ в списках на клиенте и сервере Где я проебался?
>>43740 Можно, наверное. Но это ж нужно тянуть GPG... Или нет? А так простота реализации: random.seed() в Python, math.randomseed() в Lua. Нагенерировать списочек из base58 длинной где-то 32 символа не проблема. А Lua-то запустить даже на тостере можно. >>43742 О, это ты прав, напрямую писать исполняемый код опасно. Тогда имя скрипта буду передавать, проверять, существует ли такой файл и запускать. Спасибо
>>43744 > random.seed() Эта фигня генерирует псевдослучайные числа. Это не есть хорошо для криптографии. Там, где можно найти закономерность, можно сделать уязвимость.
>>43792 Добавь простую подпись запроса каким-нибудь md5 (или любым другим) хешем. То есть допустим у тебя есть запрос: /exec/?path=script.py&arg1=foo&arg2=bar Сортируешь входящие параметры по алфавиту, чтобы получилось: params = "arg1=foo&arg2=bar&path=script.py" Плюс ты имеешь какую-нибудь случайную соль, например: salt = "98Y3cs6UwRS1TbT" Эта соль известна клиенту (чтобы подписывать запросы) и серверу (чтобы проверять), но не известна третьим лицам. Берешь хеш-функцию (md5 или какую хочешь) и получаешь хеш от соли и параметров: hash = md5(salt + "." + params) И получается у тебя допустим fddb0e9af298189f925f62bc634fbcce. Передаешь его в запросе: /exec/?path=script.py&arg1=foo&arg2=bar&md5=fddb0e9af298189f925f62bc634fbcce На сервере сверяешь так же хеш с солью для всех параметров, кроме md5. Если не совпало, значит запрос подделан, значит отбрасывается.
Плюсы: - простота реализации, пишется за 5 минут, можно запускать хоть на чайнике Минусы: - У тебя по прежнему http, все тело запроса видно перехватчику. - md5 небезопасен, но мне кажется для твоей задачи пойдет. Ну или возьми sha2.