Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
53 / 53 / 16
Регистрация: 25.02.2013
Сообщений: 171

SecurityString

30.06.2013, 19:03. Показов 1453. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть SmtpClient client;
client.Credentials = new NetworkCredential(txtLogin.Text,passwd);
как безопасно передать строку с текстбокса в passwd?
ведь просто заменение символов в текстбоксе на звездочки ,дает только внешнее скрытие символов и все.
0
 Аватар для akafeanor
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
30.06.2013, 20:04
я всегда думал, что передавать можно в открытом виде (или взять md5-хеш от пароля), тут же ведь главное не передача, а сравнение с паролем/хешем, который хранится на сервере. Если пароль/хеш совпали, значит это тот клиент, не совпали - "давай до свидания".
Наверное вы НЕ имеете ввиду под передать
passwd = textbox1.text;
0
53 / 53 / 16
Регистрация: 25.02.2013
Сообщений: 171
30.06.2013, 20:15  [ТС]
тогда получается обычного скрытия символов на форме будет достаточно?
ладно для теста думаю хватит тогда.
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
30.06.2013, 21:15
Однозначно в String НЕЛЬЗЯ (если вы видите пример где SecureString проеобразовывается в String, знайте, автор этого кода, ничего не понимает в безопасности, и в таком случае вообще нет необходимости использовать SecureString) хранить пароли, хоть даже на секунду, т.к. string тип не изменяемый, и он может в памяти хранится сколько угодно времени, а потом еще и в файл подкачки залезть, тогда ваш пароль окажется на жестком диске, а от туда он может не пропадать долгое время.

Заполнять такой тип нужно с помощью значимых типов, char допустим. Достать можно с помощью маршалинга. Пример извлечения данных:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
        public bool SetPassword(SecureString Password)
        {
            if (Password.Length == 0)
                return false;
 
            IntPtr UnmanagedDecipherPassword = IntPtr.Zero;
            byte[] BytePassword = null;
 
            try
            {
                UnmanagedDecipherPassword = Marshal.SecureStringToCoTaskMemUnicode(Password);
                BytePassword = new byte[Password.Length * 2];
                Marshal.Copy(UnmanagedDecipherPassword, BytePassword, 0, BytePassword.Length);
 
                //здесь у нас есть строка в байтах, которую можно в любой момент обнулить, что и делается в блоке finally, перед удалением ссылки.
            }
            finally
            {
                if (UnmanagedDecipherPassword != IntPtr.Zero)
                    Marshal.ZeroFreeCoTaskMemUnicode(UnmanagedDecipherPassword);
 
                if (BytePassword != null)
                {
                    for (int i = 0; i < BytePassword.Length; i++)
                        BytePassword[i] = 0;
 
                    BytePassword = null;
                }
            }
 
            return true;
        }
Пример добавления:

C#
1
2
3
4
            char ch = 'c';
            SecureString p = new SecureString();
            p.AppendChar(ch);
            ch = '\0';
PS в WPF есть такой элемиент как PasswordBox, из него можно достать пароль в виде SecureString: PasswordBox.SecurePassword

Добавлено через 12 минут
В WinForms можно сделать както так: (это упрощенный пример, здесь, например, нельзя стирать символы)

C#
1
2
3
4
5
6
7
8
        SecureString Password = new SecureString();
 
        private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            Password.AppendChar(e.KeyChar);
            TextBox1.Text = '*' + TextBox1.Text;
            e.Handled = true;
        }
0
53 / 53 / 16
Регистрация: 25.02.2013
Сообщений: 171
01.07.2013, 08:52  [ТС]
C#
1
2
3
4
5
6
7
8
        SecureString Password = new SecureString();
 
        private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            Password.AppendChar(e.KeyChar);
            TextBox1.Text = '*' + TextBox1.Text;
            e.Handled = true;
        }
[/QUOTE]
изначально делал таr делал, но когда в конструктор передавал(логин, пасс);
пасс в виде securitystring была ошибка при входе на почту.
поэтому решил узнать что не так.
0
 Аватар для Anklav
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
01.07.2013, 11:29
Ну тогда не знаю, я не работал с таким классом (NetworkCredential).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru