2012-06-03 2 views
1

SqlLite 데이터베이스를 사용 중입니다. 데이터가 애플리케이션 외부에서 수정되지 않았는지 확인하고 싶습니다. (데이터 서명)sqlite 데이터베이스의 데이터가 다른 사람이 수정하지 않았 음 (즉, 데이터에 서명)

sqlite가 데이터의 최종 수정 날짜를 유지합니까?

Windows 수정 된 파일 날짜를 사용하려고 생각했지만 두 번째로 선택했습니다. 나는 sqlite가 나에게 데이터의 해시 또는 수정 된 마지막 데이터의 타임 스탬프를 알려줄 수 있기를 바랐다.

하나의 옵션은 데이터베이스 파일의 바이트 내용의 해시를 계산하는 것입니다.이 옵션을 사용하면 파일이 다른 사람에 의해 수정되지 않았 음을 보증 할 수 있습니다. 그러나 이것은 비싸고 외부 소스가 데이터베이스를 수정하지 않았는지 확인하는 더 나은 방법을 찾고 싶습니다.

또 다른 옵션은 데이터베이스를 암호화하는 것입니다. 그러나 제 3자가 데이터를 읽을 수있게하고 수정하지 않기를 바라기 때문에 이는 이상적이지 않습니다. 나는 윈도우 7

답변

0

나는 많이 당신이 그것에 대해 할 수 있다고 생각하지 않습니다에 WPF의 .NET 클라이언트 응용 프로그램에서 System.Data.Sqlite를 사용하여 데이터베이스에 액세스하고

참고. 방어의 첫 번째 줄에서 일부 트리거

CREATE TRIGGER before_ins_on_table1 BEFORE INSERT ON table1 
BEGIN SELECT RAISE(FAIL, 'Not allowed.') ; END; 

CREATE TRIGGER before_del_on_table1 BEFORE DELETE ON table1 
BEGIN SELECT RAISE(FAIL, 'Not allowed.') ; END; 

CREATE TRIGGER before_upd_on_table1 BEFORE UPDATE ON table1 
BEGIN SELECT RAISE(FAIL, 'Not allowed.') ; END; 

하지만 ...

당신은 디지털 데이터베이스에 로그인하거나 프로그램에서 SHA1 해시를 포함하며이 경우 데이터베이스를 사용을 거부 할 수 있습니다 넣을 수 있습니다 해시가 일치하지 않지만 일반적으로 쓸모가 없습니다.

간단히 말하면 데이터베이스가 읽을 수 있다면 그것을 조작 할 수있는 사람을 막을 수있는 방법은 없습니다. 공격자는 제한없이 새 데이터베이스의 데이터를 간단히 덤프 한 다음 복원 할 수 있습니다.

관련 문제