2011-02-02 2 views
0

런타임에 BDE를 통해 Interbase DB에 연결하려고합니다. 나는 formless 프로젝트 (콘솔 앱이 아님)에서 이것을하려고한다. 별칭은 알려져 있습니다. 레지스트리에서 별칭을 검색합니다. 예 : MyAlias.BDE 별칭 만있는 경우 어떻게 Interbase 암호를 얻을 수 있습니까?

//create alias params list 
AParams:= TStringList.Create; 

//create a session to get alias parameters 
ASession:= TSession.Create(nil); 
ASession.SessionName := 'MainSession'; 
try 
ASession.GetAliasParams(tmpAlias, AParams); 
finally 
ASession.Free; 
end; 


//connect to database 
dbMain:= TDatabase.Create(nil); 
with dbMain do 
begin 
//AliasName:= 'MyAlias'; 
DatabaseName:= 'test'; 
LoginPrompt:= False; 
Params.Assign(AParams); 
try 
    Connected:=True; 
    if Connected then ShowMessage('Connected!') else ShowMessage('Failed to Connect!');  
finally 
    Free; 
end; //try 
end;//with 

//free alias params list 
AParams.Free; 

어쨋거나, Session.GetParams가 실제로 암호를 얻지 못합니다. 비밀번호는 어떻게 얻습니까? 별칭을 아는 경우 BDE에서 모든 연결 정보를 가져 와서 연결하는 방법이 있습니까? 나중에 클라이언트가 변경 될 경우에 대비해 사용자 이름과 암호를 하드 코딩하지 않을 것입니다.

+0

고객 인 경우 암호를 변경하더라도 내 데이터베이스에 액세스 할 수 있기를 원하지 않습니다. 따라서 고객의 허가없이 고객의 데이터에 액세스하려고 시도해서는 안됩니다. RRUZ에 따르면 사용자 이름, 암호 등과 관련된 정보는 암호화 된 파일에 저장됩니다. – RBA

답변

6

셰인, 데이터베이스에서 암호를 알 수있는 경우에만 별칭을 알면 데이터베이스의 모든 보안이 무의미합니다. 이므로 대답은 NO입니다.이 정보는 BDE 별칭을 알기 만하면 검색 할 수 없습니다. 암호 보호 기능을 사용하여 데이터베이스에 연결하는 방법은 최종 사용자에게 사용자와 암호를 요청하거나이 정보를 암호화 된 구성 파일에 저장하는 것입니다.

+0

고마워, 나는 그 정도를 알았다. 나는 단지 확인하고 있었다. 별칭 인 사용자 이름과 암호를 저장하는 암호화 된 파일을 사용하겠습니다. 클라이언트가 나중에 자격 증명을 변경하면이 암호화 된 파일도 변경 될 수 있습니다. - 감사! – IElite

관련 문제