Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/48: Рейтинг темы: голосов - 48, средняя оценка - 4.69
 Аватар для Kyra90
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468

Хранить строку в приложении

14.01.2022, 12:58. Показов 11059. Ответов 209
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Помогите, пожалуйста с курсовой.
Значит задача: Создать приложение с пользовательским доступом (логин/пароль, пользователь может быть пользователем, может быть админом). Значит я делаю следующим образом: В программу уже вшит пользователь "Администратор", при первом запуске предлагается создать ему пароль. Как только пароль создан рядом с приложением создается папка "Users" (по ее наличию, собственно, и проверяется первый запуск), где в файлах в зашифрованном виде хранится информация о пользователе.

Препод говорит, что это не совсем правильное решение, и файла с данными "Администратор" в папке с пользователями быть не должно, так как (цитирую дословно) "Я скопирую пользователей в другое место, прибью папку Users, запущу программу и получу доступ к Администратору, снова введя пароль, потом верну пользователей назад"

Можно ли как то хранить строковую переменную внутри приложения? Или может еще где-то. Или может какой-то другой метод хранения данных о пользователях есть? Буду очень благодарна за советы. Спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2022, 12:58
Ответы с готовыми решениями:

Как и в каком виде хранить файлы в приложении
Добрый вечер! Помогите, пожалуйста, со след. заданием.:( Требуется в имеющуюся формочку добавлять материал (то есть загружать файл с...

Как можно хранить файлы, загружаемые пользователем в приложении?
Есть приложение C# .NET 5.0, связанное с MS SQL. Пользователь должен загружать файлы (изображения) прямо в приложении и они должны...

Как правильно хранить и использовать константы в WPF приложении
Сабж в теме. Использую такой способ: имеется статический класс (вернее несколько, отдельно для числовых, строковых и прочих констант) в...

209
 Аватар для Kyra90
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
14.01.2022, 20:25  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Pilarentes Посмотреть сообщение
sqlite
можно подробнее?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
14.01.2022, 20:29
Цитата Сообщение от Kyra90 Посмотреть сообщение
можно подробнее?
SQLite
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
15.01.2022, 07:48
Цитата Сообщение от Kyra90 Посмотреть сообщение
Препод говорит, что это не совсем правильное решение
Препод какая-то тумбочка: единственное правильное решение, которое нельзя обойти -- клиент-серверное приложение. Все остальное -- до лампочки. Любой заинтересованный за пол дня с гуглом разберется как получить доступ (ну или банально скинет все нужные файлы знакомому "тыжпрограммисту").

А так, просто все содержимое папки шифруется паролем пользователя, и только пользователь сможет прочитать его содержимое. Если предполагается что к данным одного пользователя должен иметь определеный доступ и другие (скажем, только на просмотр без права менять) -- читаем пункт выше. Ну либо SQLite, и сделать вид что все ок.

p.s. вообще какой-то странный преподователь, что приходится ответ на этот вопрос искать на форуме.

Добавлено через 14 минут
Цитата Сообщение от Kyra90 Посмотреть сообщение
Есть основные правила, которые обязательны:
Сразу не обратил внимание. Тут либо SQLite и понимание что "кто захочет, то станет админом, но я научусь работать с БД", либо таки то что я озвучил выше. Ну и на самом деле правильно написанное приложение будет довольно просто переделать под работу с удаленным сервисом.
0
629 / 393 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
15.01.2022, 20:18
Цитата Сообщение от Wolfdp Посмотреть сообщение
понимание что "кто захочет, то станет админом, но я научусь работать с БД
Говорят, что можно защититься
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
15.01.2022, 21:20
Сделал что-то такое, для начала:


Программа запускается впервые - отсутствует папка Users и файлы в ней.
Кнопка логина подписывается как "Sign Up", т.е. "Создать учетку" с ролью Админа.
После ввода имени пользователя и пароля создается учетная запись админа, создается папка и файл, в который прописывается имя пользователя, роль (int, перечисление) и хешированный пароль.

При повторном запуске программы кнопка логина подписывается уже "Sign In", т.е. "Войти с учетными данными", т.к. в файле users.txt уже есть запись об учетке.

Проверять первичный запуск программы нужно не по наличию/отсутствию папки Users, а по наличию валидной записи учетных данных в файле (БД).
2
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
15.01.2022, 21:31
Kyra90, а теперь пусть ваш препод пробует получить исходный пароль из файла
0
629 / 393 / 135
Регистрация: 06.03.2017
Сообщений: 1,469
15.01.2022, 22:42
Цитата Сообщение от wizard41 Посмотреть сообщение
теперь пусть ваш препод пробует получить исходный пароль из файла
Если не посолить, то это не слишком большая проблема)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
15.01.2022, 22:46
Цитата Сообщение от Pilarentes Посмотреть сообщение
Если не посолить, то это не слишком большая проблема)
Естественно! Но вряд ли он (препод) будет заниматься брутфорсом Даже на стандартном SHA 256.
0
 Аватар для aenye
304 / 186 / 45
Регистрация: 05.07.2018
Сообщений: 580
15.01.2022, 23:11
Цитата Сообщение от wizard41 Посмотреть сообщение
лучше думать в сторону создания/чтения зашифрованного файла.
Ага, храните данные локально в зашифрованном виде. А ключ шифрования при этом где должен находится?))
Побольше бы таких подходов к безопасности - поменьше бы с лицензиями приходилось париться)

P.S. Простите, не удержался
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
15.01.2022, 23:18
Цитата Сообщение от aenye Посмотреть сообщение
Простите, не удержался
Нормально )
Ну тут все зависит от реализации. Так как задача учебная, то предложение шифрования файлов не подразумевало асинхронности, т.е. без открытых ключей. Достаточно оформить более-менее легитимный алгоритм в самом коде приложения.
Ну а если делать все "по науке", то.... ТС выйдет из чата раньше, чем мы закончим
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
16.01.2022, 06:40
Цитата Сообщение от aenye Посмотреть сообщение
Побольше бы таких подходов к безопасности - поменьше бы с лицензиями приходилось париться)
Ты шо, если человек придумал алгоритм, который не может взломать сам, то никто его не взломает!

p.s. тоже не удержался...

Цитата Сообщение от Pilarentes Посмотреть сообщение
Говорят, что можно защититься
От того что БД будет запаролена, не избавляет вас от факта, что программа как-то к ней должна уметь обращаться, а значит в ней должна храниться строка подключения, а значит её можно от туда вытянуть. Зашив и обсуфицировав строку только усложняем доступ к ней (к слову, это в определенные моменты может подкинуть неприятности).

Ну либо, админ должен запускать программу, "вылогиниватся" без завершения программы, и только тогда другой пользователь может подключится. Тоже не панацея (технически из рантайма можно вытянуть значение), но уже гораздо сложнее.

Так что повторюсь:
1. 100% защиту обеспечит только отдельный сервис под отдельной учеткой, к которой не имеет доступа пользователь
2. Для учебного примера достаточно научится работать с данными. Если преподователь сам не понимает всех ньюансов обеспечения защиты и главное -- не может/хочет обьяснять как надо, то... печально. Но не смертельно.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
16.01.2022, 10:31
Цитата Сообщение от Wolfdp Посмотреть сообщение
если человек придумал алгоритм
Какой алгоритм?
0
 Аватар для Kyra90
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
16.01.2022, 10:59  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
а теперь пусть ваш препод пробует получить исходный пароль из файла
Та мой алгоритм тоже норм шифрует)
пароль
ЖЮ*мtq\8
Цитата Сообщение от wizard41 Посмотреть сообщение
Проверять первичный запуск программы нужно не по наличию/отсутствию папки Users, а по наличию валидной записи учетных данных в файле (БД).
НЕ поняла, в чем разница... Нет папки - значит нет и файла, нет файла - нет и валидной записи.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
16.01.2022, 11:14
Цитата Сообщение от Kyra90 Посмотреть сообщение
в чем разница... Нет папки - значит нет и файла, нет файла - нет и валидной записи.
Папка и файл могут быть, а записи в файле нет. Что тогда? )
И если это будет БД - БД не может не быть ) А вот валидной записи в ней к этой сессии приложения может не оказаться..
Так мы переходим на БД или остаемся в файле?
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
16.01.2022, 14:06
Цитата Сообщение от wizard41 Посмотреть сообщение
Какой алгоритм?
Закон Шнайера

Добавлено через 1 минуту
Цитата Сообщение от wizard41 Посмотреть сообщение
Папка и файл могут быть, а записи в файле нет. Что тогда? )
Выводить "данные повреждены" и не более. Вся логика программы подразумевает первый "чистый" запуск, который очень часто применим для портабл-приложений.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
16.01.2022, 14:21
Цитата Сообщение от Wolfdp Посмотреть сообщение
Выводить "данные повреждены" и не более
Согласен. Поэтому и предлагается создать новую учетку, в случае не обнаружения таковой.
Цитата Сообщение от Wolfdp Посмотреть сообщение
Закон Шнайера
Хорошая статейка. Но свой вопрос "Какой алгоритм?" я задал в том свете, что: а какой алгоритм вы там увидели, собственно? Никаких алгоритмов шифрования в представленном примере нет; есть только стандартный хеш SHA256 из .NET'а, но я к его созданию отношения не имею
0
 Аватар для Kyra90
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
16.01.2022, 16:31  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Так мы переходим на БД или остаемся в файле?
Пока в файле. с БД еще буду разбираться, пока не учили.

Цитата Сообщение от Wolfdp Посмотреть сообщение
Выводить "данные повреждены" и не более.
Это да, а если папку удалили совсем? При удалении папки мне нужна полностью рабочая учетка "Администратора"

Добавлено через 2 минуты
Была еще идея сохранять учетку Админа в левое место, на диск C:\ например... но могут быть проблемы с доступом, что не есть хорошо. (на компах в универе, например, на диск C:\ записать ничего нельзя, что приведет программу к неработоспособности)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
16.01.2022, 16:51
Цитата Сообщение от Kyra90 Посмотреть сообщение
При удалении папки мне нужна полностью рабочая учетка "Администратора"
При удалении папки предлагается создать нового Администратора. Этот "новый" администратор все равно не сможет прочесть другие файлы, если их вернуть на место, потому что его хеш пароля не подойдет к "тому хешу".
Понятна идея?
Файл может прочесть только тот, чей хеш пароля совпадает хоть с одним из хешей админов в файле.
0
 Аватар для Kyra90
232 / 153 / 85
Регистрация: 06.10.2020
Сообщений: 468
16.01.2022, 18:06  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Понятна идея?
Идея понятна, но она не отвечает задаче. Если уже создан пароль для Администратора, то учетка должна оставаться рабочей, даже если папку Users удалили.

Добавлено через 1 минуту
Цитата Сообщение от Kyra90 Посмотреть сообщение
При удалении папки мне нужна полностью рабочая учетка "Администратора"
Цитата Сообщение от wizard41 Посмотреть сообщение
При удалении папки предлагается создать нового Администратора.
Это абсолютно разные вещи Вам не кажется?)))
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3463 / 2784 / 575
Регистрация: 04.09.2018
Сообщений: 8,757
Записей в блоге: 3
16.01.2022, 18:27
Цитата Сообщение от Kyra90 Посмотреть сообщение
Если уже создан пароль для Администратора, то учетка должна оставаться рабочей, даже если папку Users удалили.
Так она и будет рабочей, т.к. Админ залогиненный висит в памяти. Папка тут уже не при чем, удаляй - не удаляй.
А теперь если выйти из приложения и войти снова при отсутствующей папке - какого админа брать будете и от куда? )
По моему очевидно, что нужно нового регистрировать или говорить "О-па-чки, ошибка! Верните папку!"...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2022, 18:27

Где хранить информацию в WPF приложении чтобы её можно было переносить с приложением на любой компьютер?
Народ, привет. У меня есть приложение с БД ( SQL Server ) созданной в Visual Studio 2012. Но эта БД работает не у всех пользователей,...

Где лучше хранить строку подключения к sql?
Форумчане не подскажете где лучше хранить строку подключения к sql? хочу написать универсальный кдасс для получения соединения

Как хранить переменную в приложении
Здравствуйте! Приложение хранится на сервере, в приложении нужно хранить переменную с адресом e-mail сервера, менять эту переменную могут...

Где лучше хранить рисунки в приложении?
Доброго дня. В моём приложении будет пакет рисунков. Куда их лучше положить, в res\drawable или в assets, с прицелом в дальнейшем на то...

Как хранить в приложении большой объем текста
как вставить текст в Visual Basic?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru