Я пытаюсь разработать веб-сайт и соответствующую вспомогательную программу (установленную на компьютере пользователя).Веб-сайт и программа будут взаимодействовать друг с другом (в основном AJAX), но это будет представлять серьезную угрозу безопасности, если любая другая веб-страница может отправлять запросы программе.Я хочу найти решение, которое чрезвычайно затрудняет внедрение запросов на мошенничество в мою программу (установленную на компьютере пользователя).Мои мысли о том, чтобы использовать одноразовые пароли, но у меня ограниченные знания в области безопасности, и поэтому я прошу у вас ваши мысли.
Я придумал этот алгоритм одноразового пароля (псевдо):
function otp(seed, counter, unix_timestamp, action)
{
for(i = 0; i < counter; ++i)
{
seed = sha256(seed + i);
}
str = seed;
str = sha256(str + unix_timestamp/60);
str = sha256(str + action);
otp = substr(str,0,4); //Convert the first for bytes to an int.
return (int)otp;
}
Он должен иметь следующие свойства:
- Может использоваться только один раз, (На каждом поколении otp будет увеличиваться "счетчик" => новое семя)
- Будетизменяться каждую минуту (зависит от времени).
- Привязан к действию (логин, ...), зависит от конкретного действия.
- Может быть легко сгенерирован отдельно и позже может бытьсинхронизированы.
Если каждый запрос содержит код OTP и значение счетчика, это безопасно?Если нет, каковы ваши советы для достижения этой цели?Я действительно хочу все те свойства, которые я упомянул выше.
Заранее спасибо.