2014-06-15 2 views
0

배포 관리 프로젝트에 대해 생각하고있었습니다.사용자가 시스템 날짜를 변경하여 다시 날짜에 테이블을 업데이트하도록 허용하지 않음

회사에서 제조 한 제품의 모든 판매 정보가 포함 된 중앙 데이터베이스가 있다고 가정합니다. 나는 일정한 간격으로 배급업자로부터의 새로운 데이터로이 데이터베이스를 채 웁니다.

배포자 시스템에는 다른 로컬 데이터베이스가 설치되어 있습니다. Java EE Platform에는 특정 로컬 데이터베이스에 액세스하는 특정 인터페이스가 있습니다. 매주 배포자는 데이터베이스를 우리 데이터베이스와 동기화해야합니다. 배포자가 데이터베이스와 동기화되면 판매 기록이 업데이트됩니다.

배포자는 다시 날짜로 판매하지 않아야합니다. 그러나 배포자가 시스템 날짜를 변경하여 해당 날짜의 판매 송장을 로컬 데이터베이스에 추가함으로써이를 수행한다고 가정합니다. 그런 다음 그는 데이터베이스를 우리 데이터베이스와 동기화하고 판매가 데이터베이스에 반영됩니다.

필자는 어떻게 프로그래머가 인터페이스를 만들지 못하게 할 수 있습니까?

+0

데이터베이스가 다른 서버에 상주하고 클라이언트가 다른 컴퓨터에 상주하는 경우가 대부분입니다. SYSDATE 함수를 사용하여 각 트랜잭션 시간을 저장한다고 가정 해 보겠습니다. Remeber는 서버에서 시간을 반환하지 않기 때문에 사용자가 로컬 시스템에서 시간을 변경하더라도 서버는 서버의 시간에 작동합니다. 어쩌면 서버와 클라이언트가 같은 시스템에있는 환경에서 테스트를하고있을 수도 있습니다.이 경우 사용자는 시간을 변경함으로써 서버의 시간을 변경함으로써 우회 할 수 있습니다. 그러나 프로덕션 서버에서는 이러한 상황이 발생하지 않아야합니다. –

+0

@MasterChief 이것은 실제로 사람들이 직면하고있는 진정한 문제입니다. 프로그래밍 방식으로 배포자를 확인하는 방법은 무엇입니까? 그는 다시 날짜에 인보이스를 추가 할 수 없습니다. 그는 오래된 송장을 추가 할 수 없어야합니다. – UrsinusTheStrong

+2

매주 배포자 데이터베이스와 동기화하고 있습니까? 1 주일 이상 된 유통 업체의 데이터베이스 기록을 수락하지 마십시오. 문제 해결됨. –

답변

5

짧은 답변 : 예 당신은 (그리고 ...한다) 할 수 있습니다 -하지만 당신은 또한 읽어야 더

중간 대답 : 당신이 어떤 값이 제어되지 않고 당신의 데이터베이스에 입력 할 수 있도록함으로써 동기화 안하지만 명시 적으로 확정 된 것이 아닌 한 배포자 당 마지막으로 동기화 된 데이터의 흔적을 유지하고 이전 데이터를 거부하십시오. - 그래도 읽어야합니다.

긴 대답 : 대답은 기술적이며 프로그래머는 책임감을 갖습니다. . 그러나 문제는 비즈니스 계층에 있습니다. 무엇을 방지하고 싶습니까? 이전 파일을 다시 보내는 분배 자의 실수 또는 전혀 다른 것? 귀하의 기지에 잘못된 데이터를 넣으려는 배급 자의 의도적 인 시도? 외부 공격 (동시 발생, 스크립트 키디 또는 버려진 여자 친구 ...)이 의도적으로 위조 된 데이터를 전송하여 데이터베이스를 파괴합니까? 그리고 들어오는 데이터에 대한 책임은 누구에게 있습니까? 누가 (어떤 방식으로) 누가 어떤 데이터를 보냈는지 추적 해 줍니까? 그리고 데이터 손상의 위험 (발생 및 피해)은 무엇입니까? 귀사 (또는 귀사)가 보호 계수 측정기에 얼마를 투자 할 수 있습니까? 당신은 이 수행되어야 하는지를 질문 , 에 대답 할 수 있어야하고, 방법을 고려하기 전에을 수행하지 않을 경우 위험을 무엇 해야합니다.

잘못된 데이터를 동기화 할 위험이 너무 높으면 배포자가 고유 한 (중앙 집중식) 데이터베이스에서 웹 응용 프로그램을 직접 사용할 가능성을 고려할 수도 있습니다.

  • 당신의 수출 나타납니다 당신이 비즈니스 수준의 질문에 allready 답을 가지고 있고, 당신이 정말 오래된 판매 송장을 추가 유통에 대한 데이터베이스를 보호 할 필요가 있음을 알고있는 경우

    두 가지 방법이 배포자 데이터 : 데이터베이스에 복사하기 전에 각 인보이스가 올바른지 확인하십시오.

  • 오프라인 덤프를 받거나 실제 데이터베이스 동기화 방법을 사용하십시오. 실제 데이터베이스는 아니지만 배포자 별 복사본에 동기화하고 두 컨트롤을 그 카피와 진짜베이스.

한 번에 하나의 배포자 만 해당베이스를 동기화 할 수있는 프로세스라면 단일 복사본을 하나 가질 수 있습니다.

+0

감사합니다 ... 나는 당신의 대답에서 많은 다른 시각을 가지고 있습니다. :-D – UrsinusTheStrong

관련 문제