|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
|
Хранить строку в приложении14.01.2022, 12:58. Показов 11119. Ответов 209
Метки нет (Все метки)
Всем привет. Помогите, пожалуйста с курсовой.
Значит задача: Создать приложение с пользовательским доступом (логин/пароль, пользователь может быть пользователем, может быть админом). Значит я делаю следующим образом: В программу уже вшит пользователь "Администратор", при первом запуске предлагается создать ему пароль. Как только пароль создан рядом с приложением создается папка "Users" (по ее наличию, собственно, и проверяется первый запуск), где в файлах в зашифрованном виде хранится информация о пользователе. Препод говорит, что это не совсем правильное решение, и файла с данными "Администратор" в папке с пользователями быть не должно, так как (цитирую дословно) "Я скопирую пользователей в другое место, прибью папку Users, запущу программу и получу доступ к Администратору, снова введя пароль, потом верну пользователей назад" ![]() Можно ли как то хранить строковую переменную внутри приложения? Или может еще где-то. Или может какой-то другой метод хранения данных о пользователях есть? Буду очень благодарна за советы. Спасибо
0
|
|
| 14.01.2022, 12:58 | |
|
Ответы с готовыми решениями:
209
Как и в каком виде хранить файлы в приложении
Как правильно хранить и использовать константы в WPF приложении |
|
|
|||
| 17.01.2022, 05:59 | |||
|
- есть приложение, предоставляющее работу с пользователями - при первом запуске инициализируется БД, и выводит диалоговое окно настройки администратора. Это типичный сценарий для всяких CMS. - все данный храняться в папке "Data" (можно и Users, название не принципиально) - при удалении этой папки считается что пользователь затер ВСЕ и хочет начать сначала (создать админа и т.д.)
1
|
|||
|
|
||||
| 17.01.2022, 10:08 | ||||
|
Про наличие ХХ администраторов с ХХ хэшами вопрос пока отложу. ![]() Добавлено через 6 минут Это должен быть абсолютно внешний и защищённый ресурс, в котором нельзя ничего изменить и удалить через просто "взять и стереть". Тогда мы даже удалив, имеем состояние "админ уже зарегистрирован". Но и если вы вдруг решили Действительно переустановить программу на компьютере, или вторую версию установить. Опа... нереально в силу того что мы "защитили первого администратора". Замкнутый круг. Пока это не будет решено, бессмыслено придумывать что-то. Преподаватель всегда может ответить "а если я теперь сделаю...". Даже локальная БД не поможет. Он же тоже может там стереть строку? Добавлено через 7 минут Kyra90, я бы предложил такой вариант. По-видимому предподаватель хочет от вас увидеть решения. Возможно больше одного. Но явно возник закономерный вопрос - как далеко можно зайти в поисках, так как почти все решения не имеют гарантии от чтения, изменения. Я бы предложил собрать все предложенные варианты и уточнить у препода. Какой он утвердит, тот и сделать.
0
|
||||
|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
||||||||
| 17.01.2022, 10:25 [ТС] | ||||||||
|
1. Первый запуск приложения должен определяться 2. При первом запуске приложения уже должен существовать пользователь "Администратор", которому при первом запуске должен быть назначен пароль 3. "Администратор" имеет право создавать пользователей, пользователь с правами администратора имеет право создавать пользователей, пользователь без прав администратора не имеет право создавать пользователей 4. "Администратор" имеет право менять пароль любому пользователю, пользователь с правами администратора имеет право менять пароль любому пользователю, кроме пользователя "Администратор", пользователь без прав администратора имеет право менять пароль только себе 5. "Администратор" имеет право дать или забрать права администратора любому пользователю, кроме себя, пользователь с правами администратора имеет право дать или забрать права администратора любому пользователю кроме пользователя "Администратор", пользователь без прав администратора не имеет доступа к функции распределения прав администратора ТО есть другими словами: Есть программа, в которой введены какие-то пользователи. Приходит какой-нибудь Вася за комп, копирует папку "Users" в другое место, из папки программы ее прибивает и запускает прогу. Программа предлагает ему создать Администратора (так как не находит папку "Users"), он (Вася) ее создает, а потом перемещает из скопированной папки пользователей обратно в папку программы (всех, кроме Администратора). Таким образом Вася, по факту, меняет пароль Администратора. Правильно? Вот по этому и возник вопрос. Сейчас, после Вашего ответа вижу 2 способа решения: 1. То, что спрашивала вначале, как сделать так, чтоб пользователь Администратор не зависел от папки Users. и 2-й, чтоб обойти вышеуказанную проблему, может есть возможность сделать так, чтоб скопированные пользователи, при возвращении обратно в папку программы, были недоступны к использованию? Добавлено через 12 минут ![]() Добавлено через 3 минуты HF, Просто по логике все верно. Изменить пароль Администратора должен иметь возможность только сам Администратор из программы, либо очистить программу полностью (удалив, например Users) запустив ее как только установленную
0
|
||||||||
|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
|||||||
| 17.01.2022, 11:18 [ТС] | |||||||
0
|
|||||||
|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
|
| 17.01.2022, 11:21 [ТС] | |
|
Вот если так хранить пароль админа, реально?
Нет пароля - первый запуск, а если пароль есть, то с папкой Users можно делать что хочешь. Пользователя Администратор там все равно нет
0
|
|
|
|
|||||||||
| 17.01.2022, 12:32 | |||||||||
|
Расписываю по шагам: Запускается прога - если файл есть, то считывается полностью в некий массив структур: -имя -роль -хеш пароля. 1. Предлагается ввести учетные данные админа. Вводятся пользователем. Если его хеш совпал с тем, что в файле (уже в памяти в структуре), то показываем содержимое структуры на форме. Если не совпал - гуляй вася, жуй опилки.. 2. Если при запуске проги файла не оказалось - предлагается создать новый файл с новыми учетными данными. Создали, вошли. Теперь подмена файлов ничего не даст, так как в памяти находится информация из нового файла. И чтобы прочесть старый, нужно выйти (разлогиниться), и залогиниться в тот старый файл, положив его на место нового. Ну и тут повторяется п.1. Мои файлы выглядят вот так:
По поводу "вечного" Админа: как вариант, заведите некоего "системного админа" прям в коде с динамическим паролем, который каждый час/день/неделю разный. Алгоритм его формирования известен только вам. Самого пароля в коде нет, он вычисляется от функции времени F(t), заносится в кучу и там сравнивается с введенным только при попытке авторизации. Но как правильно заметил Wolfdp, зачем это надо? Если папку утащили, то предполагается "новый запуск" приложения с созданием учеток с нуля. Как уже было сказано выше, подменой файлов при новом админе прочитать данные не получится. Так же, предусмотреть ситуацию, когда файл есть, в нем есть сведения о пользователях, но отсутствует учетка админа - в таком случае файл считать Broken и так же ничего из него не выводить. Добавлено через 4 минуты Ну что вы как дети, е-мое )
1
|
|||||||||
|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
|||
| 17.01.2022, 12:47 [ТС] | |||
![]() И что Вы скажете по поводу моего предыдущего ответа с кодом?
0
|
|||
|
|
|||
| 17.01.2022, 12:52 | |||
|
0
|
|||
|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
|||
| 17.01.2022, 12:53 [ТС] | |||
|
0
|
|||
|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
|||
| 17.01.2022, 13:21 [ТС] | |||
|
wizard41, Если не сложно, можете поделится кодом, как записывать пользователей, чтоб получать
Добавлено через 10 минут
0
|
|||
|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
|
| 17.01.2022, 13:48 [ТС] | |
|
0
|
|
|
|
||
| 17.01.2022, 14:08 | ||
|
Я, проникшись вашим заданием, решил сделать библу, которую можно подключить хоть к консоли хоть к вин-формам, и управлять юзерами, которые находятся в зашифрованном файле. В дальнейшем, можно расширить функционал, добавив работу с БД различных провайдеров.. Но это если терпения хватит ) В таком случае - как ваши параметры в Properties.Settings будут сочетаться с этой DLL? Можно, конечно, но пока даже примерно не думал как. Возьмите, на пример, любой портабельный менеджер паролей. Как она работает? База есть -> входи с паролем. Базы нет -> создавай новую. Пароль забыл? -> иди нафиг. И все. Зачем велики плодить??
1
|
||
|
|
||
| 17.01.2022, 14:11 | ||
![]() А что препод скажет, увидев "библу"?
0
|
||
|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
|
| 17.01.2022, 14:13 [ТС] | |
|
0
|
|
| 17.01.2022, 14:15 | |
|
0
|
|
|
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
|
|
| 17.01.2022, 14:29 [ТС] | |
|
0
|
|
| 17.01.2022, 14:29 | |
|
Где хранить информацию в WPF приложении чтобы её можно было переносить с приложением на любой компьютер? Где лучше хранить строку подключения к sql? Как хранить переменную в приложении Где лучше хранить рисунки в приложении? Как хранить в приложении большой объем текста Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|