Место хранения имени пользователя и пароля - PullRequest
0 голосов
/ 18 апреля 2011

Я пишу программу на vb.net, которая требует от пользователя войти в систему, прежде чем он сможет использовать приложение. Основной пользователь создается при установке программы, аналогично тому, как работает windows при ее установке.

Основной пользователь может добавлять в программу дополнительных пользователей. Я уже знаю, что я должен хранить пароли в зашифрованном виде. У меня вопрос, где я должен хранить имена пользователей и пароли? Реестр, изолированное хранилище или файл .config. Я не хочу, чтобы какой-либо пользователь мог изменять / удалять этот файл, поскольку другой пользователь, очевидно, не сможет войти в систему. Кроме того, этот файл должен быть доступен для любого пользователя, который входит в компьютер.

Не гарантируется, что компьютер подключен к Интернету, поэтому он должен храниться локально.

Спасибо

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

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

Вы можете попытаться сохранить данные приложения в виде зашифрованного файла, который может остановить любительские попытки, но при использовании .net framework ваша программа может быть декомпилирована и любые алгоритмы симметричного шифрования могут оказаться бесполезными..

Я думаю, что вам лучше всего либо создать начальное число в соответствии с компьютером, на котором установлена ​​программа, и, если расшифровка не удалась, позвонить домой или перейти в режим блокировки вниз.

Другой вариант будетхранить зашифрованный (зашифрованный с помощью вашего симметричного ключа) файл и хеш-файл (возможно, в разных местах).Если хэш загруженного файла не совпадает с хеш-файлом, который ваша программа могла бы затем назвать home (если у вас есть дом для вызова).

Это просто идея, на самом деле не пыталсячто-нибудь подобное.

0 голосов
/ 19 апреля 2011

Если вы не можете каким-либо образом использовать пользователей / учетные данные Windows на компьютере, то на самом деле не существует абсолютного способа предотвратить удаление / изменение файла, поскольку любой пользователь на компьютере имеет такой же доступ, что и основнойПользователь, которому нужны права на изменение файла, чтобы он мог добавлять пользователей через программу.

Единственный способ сделать это наверняка - это войти в систему основного пользователя с другим именем пользователя и установить права доступа к файлу для этого файла / папки, чтобы убедиться, что только основной пользователь имеет разрешение на изменениефайл (и другая учетная запись пользователя не имеет права изменять разрешения).Я знаю, что вы сказали, что это не будет работать в вашей среде (что?), Но вы могли бы создавать пользователей и запускать вещи под разными учетными данными через ваш код, не заставляя пользователей входить в систему по-другому.

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

...