• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

парольная аутентификация

  • Автор темы rossik
  • Дата начала
R

rossik

Помогите, пожалуйста!Нужно разработать средства парольной аутентификации на Borland C++ Builder 6.0, а именно:задание максимального и минимального сроков действия пароля, ведение списка уже использованных паролей задаваемой максимальной длины. Есть ли какие-нибудь стандартные функции?Если нет, подскажите,с чего начать, чем пользоваться?
 
K

kot_

Причем тут билдер?
парольная аутендификация - где - в воздухе? Сама по себе?
Свое апи в ОС, свое в других системах, например БД.
В простейшем случае тебе надо определиться кчему ты будешь "аутендифицироваться" - и уже исходя из этого задавать вопрос.
 
R

rossik

У меня уже дана программка на С++. Пользователь запускает ее, появляется форма "Вход в систему", пользователь вводит логин и пароль (учетные записи храняться в отдельном файле там же). Есть меню, с помощью него можно вызвать форму "Смена пароля" и поменять пароль. Моя задача дополнить эту прогу дополнительными средствами аутентификации, про которые я писала выше...Предполагаю, надо искать в библиотеке time.h, но конкретные подходящие функции пока не нашла...
 
S

SergKappa

Что значит "разработать средства парольной аутентификации на Borland C++ Builder 6.0, а именно:задание максимального и минимального сроков действия пароля, ведение списка уже использованных паролей задаваемой максимальной длины"?
Аутентификация как раз осуществляется с помощью пароля!
Как хранятся пароли? Если в базе данных - можно прикрутить дополнительные поля: дата начала действия пароля, дата окончания и проверять текущую дату.
 
R

rossik

Пароли хранятся в файле учетных записей, который создается здесь же, в программе. Когда пользователь входит, его логин и пароль ищутся в этом файле и проверяются (они хранятся в зашифрованном виде, но это не суть важно). Эта проверка и есть аутентификация, я не спорю. Так вот, дополнительные средства аутентификации- это как раз и есть макс. и мин. сроки действия пароля. Я думаю, что да, время создания пароля должно фиксироваться и сравниваться с текущим, но не знаю, с помощью каких функций это можно сделать...В инете очень мало про системные функции времени...
 
K

kot_

В инете очень мало про системные функции времени...
Да ну? Што вы говорите...Хто бы мог подумать. :(
Для получения текущей даты:
Код:
char str[256];
SYSTEMTIME systime;
GetLocalTime(&systime);
sprintf(str, "%02d.%02d.%d", systime.wDay, systime.wMonth, systime.wYear);
Получение текущей даты и времени:
Код:
char str[256];
SYSTEMTIME systime;
GetLocalTime(&systime);
sprintf(str, "%02d.%02d.%d - %d:%d:%02d", systime.wDay, systime.wMonth, systime.wYear, systime.wHour, systime.wMinute, systime.wSecond);
Строка будет содержать: "06.05.2008 - 8:15:26"
Время создания пароля надо записывать в базу - или как строку времени(как преобразовать в строку я показал ) - или как бинарное значение, благо размер структуры известен.
Для сравнения времени в данном формате его надо преобразовать в формат FileTime (SystemTimeToFileTime) а затем сравнить функцией CompareFileTime. Вобщем RTFM.
Кроме того, в билдере существует специальная функция - возвращающая текущее локальное время - называется она как ни странно :) Now();
Возвращет она класс TDateTime. Он используеться во всех функциях для работы со временем (см. справку).
 
R

rossik

Да ну? Што вы говорите...Хто бы мог подумать
kot_, не дразнись!!!
А зачем возвращать текущее время и дату?Можно же по идее ограничиться системным, оно же только для программы нужно, пользователь его даже не увидит...Просто фиксировать текущее системное время вначале, и потом, при входе в систему..Находить разность текущего и записанного в файле и сравнивать с каким-то заданным, которое будет обозначать максимальный и минимальные сроки действия пароля...Или я чего-то не понимаю?
Вообщем, еще подумаю, спасибо)
 
S

SergKappa

Да ну? Што вы говорите...Хто бы мог подумать
kot_, не дразнись!!!
А зачем возвращать текущее время и дату?Можно же по идее ограничиться системным, оно же только для программы нужно, пользователь его даже не увидит...Просто фиксировать текущее системное время вначале, и потом, при входе в систему..Находить разность текущего и записанного в файле и сравнивать с каким-то заданным, которое будет обозначать максимальный и минимальные сроки действия пароля...Или я чего-то не понимаю?
Вообщем, еще подумаю, спасибо)
Word Year, Month, Day, Hour, Min, Sec, MSec;
TDateTime dtPresent = Now();
DecodeDate(dtPresent, Year, Month, Day);
А еще можно установить разрешенное время работы!
DecodeTime(dtPresent, Hour, Min, Sec, MSec);
Для удобства пользователей за 1-2 дня можно выдавать предупреждение об окончании срока действия пароля и предлагать его сменить.
Минимальный срок действия пароля - бред! Зачем? Вот минимальная длинна пароля - другое дело. Если пользователь ввел короткий пароль - потребовать ввести другой.
 
R

rossik

[Минимальный срок действия пароля - бред! ]
Скажите это нашему преподу...:(Спасибо за функции, будем изучать)
 
K

kot_

А зачем возвращать текущее время и дату?Можно же по идее ограничиться системным, оно же только для программы нужно, пользователь его даже не увидит...Просто фиксировать текущее системное время вначале, и потом, при входе в систему..Находить разность текущего и записанного в файле и сравнивать с каким-то заданным, которое будет обозначать максимальный и минимальные сроки действия пароля...Или я чего-то не понимаю?
Ну так для этого и нужна тебе функция которая возвращает текущее время и дату. :) А затем ты свравниваешь полученное значение с датой которая записана у тебя в файле - получаешь разницу - и проверяешь - если больше минимального срока проверяешь максимальный - меньше максимального выдаешь предупреждение о необходимости смены пароля, если больше максимального - блокирушь вход.



и требуешь смены пароля.
SergKappa
Решение
Для удобства пользователей за 1-2 дня можно выдавать
ничуть не лучше. этот параметр необходимо тоже хранить - или в файле или в реестре - и точно так же считывать. студенты и те кто только начал программировать - обычно делают его глобальным. :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!