Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Ввод пароля для основной программы   Найти похожие ветки 

 
avgur   (2004-04-20 13:52) [0]

Нужна калифицированная помощь мастеров!!! Задача следующая: при загрузке программы должна загрузится Splah затем появится форма для ввода имени и пароля. Затем при правильном пароле закрывается форма пароля и загружается основная программа. Справочник имени и паролей хранится в dbf. Как сделать это пока не знаю :( раньше не приходилось.  Может кто подскажет или скажет где почитать. Если не жалко, может поделитесь кодом.


 
Курдль ©   (2004-04-20 13:55) [1]


> Справочник имени и паролей хранится в dbf.

Мож просто вывесить его на проходной?.. :)))


 
LM2   (2004-04-20 14:00) [2]

Просто, делаешь вторую Splash форму, а в ней 2 Едита для ввода логина пароля


 
avgur   (2004-04-20 14:01) [3]


> Мож просто вывесить его на проходной?.. :)))


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


 
avgur   (2004-04-20 14:05) [4]


> Курдль ©   (20.04.04 13:55) [1]


А в чем Вы предлагаете хранить данные имен и паролей?
и каким методом шифровать?? кроме Xor?


 
Reindeer Moss Eater ©   (2004-04-20 14:29) [5]

Задача следующая: при загрузке программы должна загрузится Splah затем появится форма для ввода имени и пароля. Затем при правильном пароле закрывается форма пароля и загружается основная программа. Справочник имени и паролей хранится в dbf. Как сделать это пока не знаю

1. Форма ввода имени/пароля.

TForm - один штука
TEdit - две штуки
TLabel - две штуки
TBitBtn - две штуки

2. Имя и пароль в dbf

Читать/писать из таблиц надо полагать умеем?
Сравнивать прочитанное из TEdit и TField оператором IF тоже?

Закрывать главную форму приложения в одной из веток if сложно?

По моему нет.


 
Курдль ©   (2004-04-20 15:50) [6]


> это делается не для защиты данных, а для того, чтобы диспетчера
> входили и делали документы под своим именем.

Ага! Так система многопользовательская? Ну так и флаг Вам в руки - возьмите простенькую и надежную (ни в коем случае не IB) СУБД - в ней все и так должно быть - и роли юзеров и пароли с логинами! Вам заботиться будет не о чем!


 
Danilka ©   (2004-04-20 16:04) [7]


> ни в коем случае не IB

почему?


 
Курдль ©   (2004-04-20 16:06) [8]


> > ни в коем случае не IB
>
> почему?

Не люблю ее :)


 
Fay ©   (2004-04-20 16:07) [9]

Курдль любит Oracle, после которого IB - смерть с граблями 8)


 
Курдль ©   (2004-04-20 16:20) [10]


> Курдль любит Oracle, после которого IB - смерть с граблями
> 8)

Ну, напр., если злой диспетчер 8-| захочет совершить информационную диверсию - он легко сможет спереть себе домой файл БД глубокоуважаемого avgur-а, запустить его на своей СУБД с паролем SYSDBA и логином MASTERKEY и напутать все диспетчерские секркты! Во!


 
Fay ©   (2004-04-20 16:24) [11]

>> он легко сможет спереть себе домой файл БД
А доступ у него есть?


 
Курдль ©   (2004-04-20 16:46) [12]


> А доступ у него есть?

Доступ к чему? К компу? Всего-то делов - переписать себе файл ".gdb", надругаться над ним и вернуть назад.


 
Fay ©   (2004-04-20 16:50) [13]

Переписать откуда? Себе - это куда?


 
avgur   (2004-04-20 17:38) [14]

Переписать не смогут, да и не зачем...

А вот как сделать толком так и никто не сказал...
И если база Paradox, то сразу перейти на IB, Oracle или MySQL не получится, а вот помочь бы с проблемкой стало быть никто не может или не хочет.... :(


 
ЮрийК ©   (2004-04-20 18:23) [15]

Три формы:
Основная программы - условно FormMain
Splash форма - FormSplash
форма для ввода паролей - FormParols

В файле проекта DPR:

begin
 Application.Initialize;
 Application.CreateForm(TFormMain, FormMain);
 Application.CreateForm(TFormParols, FormParols);
 Application.ShowMainForm := False;
 Application.CreateForm(TFormSplash, FormSplash);
 Sleep(3000);
 FormSplash.Free;
 Application.Run;
end.

В основном модуле:

procedure TFormMain.DoAtStart(Sender: TObject; var Done: Boolean);
begin
 Application.OnIdle := nil;
 Visible := False;
 FormParols.ShowModal;
 if ({Сверяем пароли}) then begin
   ...
 end
 else begin
   ...
 end;
 Visible := True;
 ShowWindow(Application.Handle, SW_SHOW);  
end;

procedure TFormMain.FormCreate(Sender: TObject);
begin
 Application.OnIdle := DoAtStart;
end;


 
ЮрийК ©   (2004-04-20 18:28) [16]

Добавочно:
У FormSplash свойство Visible должно быть установлено изначально в True в ObjectInspector-е.


 
Danilka ©   (2004-04-21 13:10) [17]

[10] Курдль ©   (20.04.04 16:20)
> Ну, напр., если злой диспетчер 8-| захочет совершить информационную
> диверсию

На самом деле, если ты имеешь доступ к физ. файлам БД практически любой СУБД, хоть МС-Скуля, хоть Орокла, то такую "диверсию" тоже сможешь совершить.
Так что ИБ здесь совершенно не причем, а причем только кривые руки админа сети, который всяким диспетчерам дает доступ туда, куда не следует. Вот его и не люби. :))


 
-SeM-   (2004-04-21 13:25) [18]

А роль "SYSDBA" не пробывали создать? Попробуйте, поможет. Потом только физическое чтение страниц.


 
Курдль ©   (2004-04-21 14:26) [19]


> На самом деле, если ты имеешь доступ к физ. файлам БД практически
> любой СУБД, хоть МС-Скуля, хоть Орокла, то такую "диверсию"
> тоже сможешь совершить.

В Оракле можно только навредить вплоть до полного краха базы.
Отыскать пароль - упыхаешься (особенно, если ты диспетчер) :)
У нас однажды стояла задача автоматизации простенького но денежного процесса. И надо было предотвратить всякую возможность незаметно "подхимичить" в отчетах. Тогда-то IB была напрочь отметена.


 
Danilka ©   (2004-04-21 15:01) [20]

[19] Курдль ©   (21.04.04 14:26)
> В Оракле можно только навредить вплоть до полного краха
> базы.

На sql.ru обсуждали методику, где-то в под новый год. Детали не помню, но можешь там спросить или поискать. Так что, и Орокол не спасет.
А на счет "подхимичить", можно шифровать данные по паролю юзера, например.
Есть, кстати даже СУБД, которая умеет так сама шифровать таблицы. Правда, не помню как называецца, что-то на А :))


 
Курдль ©   (2004-04-21 15:19) [21]


> На sql.ru обсуждали методику, где-то в под новый год. Детали
> не помню, но можешь там спросить или поискать.

Что-то сильно сомневаюсь.


> Есть, кстати даже СУБД, которая умеет так сама шифровать
> таблицы. Правда, не помню как называецца, что-то на А

Шифровать таблицы - задача для школьника.

Ладно, наведу автора на мысль.
Как говорят в армии - "по разделениям".
1. "Справочник имен и паролей", как называл его автор, должен содержать и вправду имена и пароли. Я бы назвал это таблицей.
2. И еще нехило бы, чтобы он ссылался на таблицу людишек по ее ID.
3. Естесснно, должны быть оформлены надлежащим образом все идентификаторы, индексы и внешние ключи.
4. При возникновении острой необходимости поработать, диспетчер вызывает модальное окно логина. Вводит свое имя и пароль.
5. По нажатии "Ок" происходит запрос к СУБД, в котором условием будет where LOGIN = :LOGIN and PASSWORD = :PASSWORD
6. Если запрос вернулся голимым порожняком - диспетчер получает отлуп. В противном случае - получает достУп.
7. Если диспетчер правильный, то в дальнейшем, вплоть до разрыва с БД, его ID приписывается всем записям в "критических" таблицах.

ЗЫ. Для автора. Могу поделиться кодом или выполнить всю работу. Цена - договорная. Дорого.



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.029 c
14-1082197153
Тимур
2004-04-17 14:19
2004.04.11
Counter-strike через модем


3-1079337846
Nikolai_S
2004-03-15 11:04
2004.04.11
Как динамически добавить поля типа fkCalculated к TADOQuery?


14-1079201962
ИМХО
2004-03-13 21:19
2004.04.11
Шо такое Dedicated Hosting?


1-1082527909
denisWW
2004-04-21 10:11
2004.04.11
Вопрос по F1Book


4-1075718960
Grinder
2004-02-02 13:49
2004.04.11
поверх всех окон