gifts2017

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

 

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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