Одноразовые пароли доступа

Опубликовал Андрей Кайгородов (mszsuz) в раздел Администрирование - Защита, права, пароли

Нередко, в защищенной со всех сторон  системе, необходимо предоставить пользователю возможность выполнить действия, выходящие за рамки его полномочий. При этом у администратора не всегда есть возможность тут же залезть в базу и открыть доступ.

 

 

Например, у нас на производстве, экспедиторы, работающие посменно, находили ошибки предшественника и хотели бы их исправить, но период неумолимо закрывался в конце каждой смены и не было никакой возможности внести изменения. Опущу детальное описание регламента внесения изменений - здесь оно не важно.

После нескольких очень ранних утренних звонков, когда приходилось включать комп, подключаться к удаленной базе и что-то править, именно тогда и  пришло в голову это решение.

Допустим, сегодня 11 февраля 2011 года. Пользователю необходимо внести изменения за предыдущую дату - 10.02.11. Он связывается с администратором, объясняет причину, слышит в ответ «39 21 94 10», вводит эту цифирь в обработку "Изменение рабочей даты" и получает доступ.

Теперь о том - откуда взялись эти цифры и почему система приняла их как корректный код. Всё очень просто - структура кода доступа такова:

(две любые цифры=39)

(31-ТекущееЧисло=21)

(опять две любые цифры=94)

(12-ТекущийМесяц=10)

Программа легко вычислила, какой код должен ввести пользователь, сверила с тем что он  реально ввел и в соответствии с результатом проверки приняла решение - пускать или не пускать.

На любой  другой день код доступа будет другой, так что повторно им воспользоваться не удастся. За счет использования «двух любых цифр» алгоритм формирования кода становится менее предсказуемым.

Вариаций на эту тему может быть сколь угодно много - например вместо «двух любых цифр» или вместо вычисляемых чисел использовать (Текущий час в Австралии), можно учитывать чет/нечет даты или количество дней до пятницы, использовать контрольную сумму чисел и т.д. и т.п.

Общая рекомендация по алгоритму формирования кода - он должен легко генерироваться администратором  базы в уме и вместе с тем, алгоритм составления не должен быть очевидным. И не забудьте защитить программу проверки кода паролем  или обфускацией.

 

См. также

Комментарии
1. Владислав Чинючин (vcv) 83 11.02.11 08:32 Сейчас в теме
Исправлением косяков в закрытых периодах должен заниматься специально выделенный ответственный человек, а не оператор с разрешения админа.
elian; cleaner_it; +2 Ответить 1
2. Александр Рытов (Арчибальд) 2655 11.02.11 08:39 Сейчас в теме
В приложении к моей статье http://infostart.ru/public/73303/ (п 1.4.4.) такой способ взлома системы безопасности классифицирован как "социально-психологический".
3. Олег Черкасов (oleg974) 123 11.02.11 08:55 Сейчас в теме
Гораздо проще такие проблемы решаются административно, а не программно.
Обычно период закрывают после расчета каких-нибудь бухгалтерских документов и исправление первичных документов в закрытом периоде связано с трудоемким процессом вторичного пересчета всех зависимых документов. Почему бы эспедитору не звонить бухам или завскладом с просьбой открыть период? Или раз таких ситуаций дофига, то просто закрывать не каждое утро, а через каждые 2-3 дня? И никакие пароли не нужны и админстратор спакойно занят своими делами...
4. Андрей Кайгородов (mszsuz) 64 11.02.11 09:47 Сейчас в теме
Я им про фому, а они про ерёму )
(1)(3) Давайте не будем обсуждать систему отлаженных бизнес-процессов, которая работает уже более 4-х лет - у вас для полноценной критики недостаточно информации.
За последние полгода-год помню всего три обращения по поводу отката периода -
два раза девочка случайно нажала лишний раз "Открыть следующий период", а один раз пришлось вернуться из-за пересортицы в отгрузке.
5. Александр Рытов (Арчибальд) 2655 11.02.11 09:56 Сейчас в теме
6. Андрей Кайгородов (mszsuz) 64 11.02.11 10:12 Сейчас в теме
(5) даже и не думал, странно что так показалось.
7. Олег Черкасов (oleg974) 123 11.02.11 11:22 Сейчас в теме
(4) дык я и не критикую, а предлагаю более простой вариант... просто после прочтения "После нескольких очень ранних утренних звонков, когда приходилось..." подумал чего человеку мучится и изобретать временные пароли, когда это не его проблема?
У меня например задач такая прорва, что на такие редко появляющиеся просто придумываю как их решить без программирования.
8. hasp_x 145 14.02.11 11:53 Сейчас в теме
была бы идея, а куда ее присобачить, каждый решает сам:))
9. Вадим Никонов (V.Nikonov) 113 16.02.11 15:34 Сейчас в теме
А если количество переметров, которые "незя менять, но очень хочется" достаточно большое?
Тогда придётся править каждый такой случай... А пароль везде единый использовать?

Может лучше состряпать спецПользователя с одноразовым паролем и ограниченым временем работы? Для этого пользователя использовать в пароле порядковый номер запуска?
10. Vitalik Gribov (grivigen) 21.04.11 14:18 Сейчас в теме
У нас давно похожая система используется. Центральный офис и филиалы. В центре установили кучу запретов. Но в пять часов там уже никого нет и открыть доступ некому. А филиалы есть и круглосуточные :cry: . Плюс к этому есть еще привязка ко времени, т.е. пароль действует 1 час. Плюс к этому некоторые подконтрольные действия также под паролем (например ввод нового товара на филиале возможен только с разрешения менеджера центр. офиса, который и дает пароль). :D
11. Алексей Новоселов (a-novoselov) 961 19.12.11 12:11 Сейчас в теме
Да, тоже использовали подобную систему, только пароль генерировал начальник отдела продаж по телефону на изменение расходных документов в 3 часа ночи... админу-то надо инструмент дать, а вот в 3 ночи формулу вспоминает пусть тот человек, чья зона ответственности или пусть сводит такие ситуации на минимум.
12. Юлия Петрова (petrovaUL) 20.01.12 14:32 Сейчас в теме
Плюс. Пригодится, хотябы для Аудиторов. Хотя в прошлой конторе - бухи просили дать права и т.п. на день. Полезная вещица.
Оставьте свое сообщение