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

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

14.01.2022, 12:58. Показов 11203. Ответов 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
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 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
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 3
15.01.2022, 21:20
Сделал что-то такое, для начала:


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

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

Проверять первичный запуск программы нужно не по наличию/отсутствию папки Users, а по наличию валидной записи учетных данных в файле (БД).
2
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 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
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 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
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 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
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 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
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 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
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 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
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 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
3465 / 2785 / 576
Регистрация: 04.09.2018
Сообщений: 8,760
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru