Delphi에서 네트워크 프로그램 작성을 위한 보안 조치
Delphi의 MIDAS 컨트롤은 네트워크 프로그램 작성을 위한 매우 편리한 수단을 제공합니다. 이러한 컨트롤을 사용하면 LAN에서 클라이언트/서버 시스템 프로그램을 작성할 수 있으며 인터넷에서 분산 처리 응용 프로그램을 쉽게 만들 수도 있습니다.
네트워크 프로그램의 중요한 문제는 보안 고려사항입니다. 일부 민감한 데이터는 온라인으로 전송되며 불법적으로 가로채어 불필요한 손실을 초래할 수 있습니다. 실제 프로그래밍 과정에서 몇 가지 효과적인 예방 조치를 취했는데, 여기서는 간단히 소개하겠습니다.
1. 원리
현재 데이터 보호에 특정 역할을 하는 데이터 암호화 방법은 다양합니다. 그러나 고정된 키를 사용하거나 키를 데이터와 함께 전송하는 경우에는 만족스러운 기밀성 결과를 얻을 수 없습니다. 실제로 저는 "요청-응답" 모드에서 일련의 무작위 키 방법을 알아냈는데, 이는 비밀번호와 데이터의 기밀을 유지하는 데 매우 만족스럽습니다.
클라이언트 프로그램이 시작되어 서버 프로그램과의 연결을 시도하면 클라이언트 프로그램은 서버 프로그램에서 생성한 임의의 문자열을 서버에서 얻습니다. 시스템은 이 문자열을 키로 사용하여 사용자의 로그인 비밀번호와 데이터를 전송합니다. 키는 서버 프로그램에 의해 무작위로 생성되기 때문에 고객이 로그인할 때마다 키가 달라지므로 비밀번호 도용으로 인한 데이터 도난 가능성이 크게 줄어듭니다.
서버는 원격 데이터 모듈에 임의의 문자열을 반환하는 사용자 정의 인터페이스를 도입할 수 있습니다. 원격 데이터 모듈은 이 문자열을 후속 처리를 위한 키로 기록해야 합니다. 무작위 문자열은 다양한 방법으로 생성될 수 있습니다. 가장 간단한 방법은 Random() 함수를 사용하여 난수를 생성한 다음 Format() 함수 또는 IntToStr()을 사용하여 이 숫자에서 문자열을 생성하는 것입니다.
2. 이용자 로그인 조치
프로그램이 불법적으로 디버깅되어 비밀번호가 유출되는 것을 방지하기 위해서는 고객의 로그인 정보를 서버 측에서 처리해야 하거나 고객의 로그인을 담당하도록 보안 계층을 특별히 추가할 수 있습니다. 고객의 로그인 정보는 사용자 이름, 비밀번호, 권한 및 기타 정보를 포함하여 고객 정보 테이블에 저장됩니다.
클라이언트 프로그램은 로그인 시 먼저 서버 프로그램의 인터페이스를 호출하여 키 문자열을 획득하고, 이 키를 사용하여 사용자가 입력한 사용자 이름과 비밀번호를 암호화한 후 로그인 정보를 서버로 보냅니다. 암호화 알고리즘은 DES 알고리즘 또는 기타 효과적인 알고리즘일 수 있습니다. 서버는 로그인 정보를 수신한 후 먼저 생성되어 기록된 랜덤 키로 로그인 정보를 복호화한 후, 복호화된 정보를 저장된 고객 정보 테이블의 정보와 비교하여 고객 정보가 적법한지 여부와 고객 데이터 권한을 확인합니다. 즐겼다 등등
이 프로세스를 위한 클라이언트 프로그램은 다음과 같습니다.
strKey:=myRemoteSever.GetKey();
{임의의 키를 얻기 위해 서버의 인터페이스를 호출함}
사용자 이름:=Ency(str사용자 이름
str키);
{사용자 이름을 암호화합니다. Ency()는 암호화 알고리즘입니다.}
비밀번호:=Ency(strPassword
str키);
{로그인 비밀번호 암호화}
myRemoteServer.LogIn(사용자 이름
비밀번호) 다음 {로그인}
시작하다
{프로세스}
끝;
서버 측 로그인 프로세스 LogIn()은 다음과 같습니다.
strUserName:=DeEncy(사용자 이름
str키);
{사용자 이름 복호화, DeEncy()는 복호화 알고리즘입니다.}
strPassword:=DeEncy(비밀번호
str키);
{로그인 비밀번호 복호화}
{쿼리 데이터베이스}
if (통과) then
결과:=true
또 다른
결과:=거짓;
StrKey는 서버 프로그램과 클라이언트 프로그램 모두에서 전역 변수로 정의되어야 한다는 점에 유의해야 합니다.
고객 정보 테이블이 프로그램 외부에 공개되어 비밀번호가 유출되는 것을 방지하기 위해 고객 정보에 대해 특정 암호화 조치를 구현할 수 있습니다. 예를 들어 PARADOX 테이블에 비밀번호를 추가하면 서버 프로그램이 먼저 제공합니다. 고객정보 테이블 접속 시 비밀번호입니다.
3. 데이터 전송
네트워크 애플리케이션에서 일부 민감한 데이터는 인터넷을 통해 전송될 때 암호화되어야 합니다. Delphi의 MIDAS 메커니즘은 데이터가 클라이언트로 전송되기 전에 일부 필드를 암호화할 수 있는 방법을 제공합니다. 또한 클라이언트의 업데이트 데이터 요청을 받은 후 데이터베이스로 전송하기 전에 클라이언트에서 데이터의 해당 필드를 해독할 수도 있습니다. . 업데이트하세요. 이러한 목표를 달성하기 위해 서버 프로그램의 원격 데이터 모듈에 TPRovider 또는 TdataSetProvider 개체를 추가하고 이 개체의 DataSet 속성을 처리할 데이터 세트로 설정할 수 있습니다. Tprovider의 OnGetData 이벤트에 다음 코드를 추가합니다.
DataSet을 사용하면
시작하다
EOF가 아닌 동안
시작하다
편집하다;
SensitiveData.AsString :=
Ency(SensitiveData.AsString)
str키);
{민감한 데이터 암호화}
우편;
다음;
끝;
끝;
위 코드는 중요한 데이터를 클라이언트 프로그램으로 보내기 전에 암호화할 수 있습니다.
마찬가지로 Tprovider의 OnUpdateData 이벤트에 일부 처리 코드를 추가하면 클라이언트가 보낸 데이터의 암호를 해독할 수 있습니다.
위의 내용은 네트워크 프로그램에 대한 보안 조치를 구현하는 일반적인 원칙만 소개한 것입니다. 이를 바탕으로 더 나은 기밀성 효과를 달성하기 위해 다른 기밀성 조치를 추가할 수 있습니다. 예를 들어 클라이언트 프로그램은 특정 보조 하드웨어 장치를 사용하여 보안을 강화할 수 있습니다. 스마트 카드 애플리케이션에서 클라이언트 프로그램은 사용자가 로그인할 때 사용자 이름과 비밀번호를 입력하도록 요구할 뿐만 아니라 이러한 방식으로 IC 리더에서 IC 카드의 유형과 특정 내용을 확인합니다. 비밀번호가 유출되면 누구도 사칭하여 로그인할 수 없습니다. 물론 어떤 보안 조치도 절대적으로 안전하지는 않습니다. 보안 조치에는 엄격한 기밀 유지 시스템이 있어야 하며, 실제로 기밀을 유지하려면 사용자 측에서 높은 수준의 기밀 유지 인식이 있어야 합니다.