2011-01-07 3 views
0

데이터 복원 프로세스를위한 모델이없는 관리 인터페이스를 개발 중입니다. 페이지의 양식을 통해 사용자는 복원 파일을 업로드 할 수 있습니다. 이제 사용자가 양식을 제출하면 먼저 파일을 업로드하고 사전 처리 한 다음 사용자에게 확인 페이지를 표시하려고합니다.장고에 FileInput 필드가있는 양식의 확인 페이지를 묻습니다.

전처리 과정에서 양식이 유효하다고 가정하고 복원 파일의 압축을 풀고 그로부터 백업 시간을 추출한 다음 확인 페이지에 백업 시간 및 복원 파일의 기타 정보를 사용자에게 표시합니다. .

제 문제는 파일 상태를 저장하는 것이 가장 좋은 방법인지 모르겠습니다. 이상 적으로 업로드 된 파일을 확인 페이지 양식에 전달하고 계속 진행하기로 동의하면 복원 파일을 사용하여 실제로 시스템을 복원합니다. 그러나, 나는 그것을하는 방법을 알아낼 수없는 것.

그래서 내가 한 것은 파일을 먼저 저장 한 다음 어떻게 든 숨겨진 필드의 확인 페이지에 파일 경로를 포함시키는 것입니다. 그러나 사용자가 확인 양식을 제출할 때 파일 경로를 수정할 수 있으므로 보안 위험이 있습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

감사합니다.

답변

1

파일 경로 위치를 session에 저장하십시오.

def your_view(request): 
    ... 
    request.session['file_path'] = 'the file path' 

그런 다음 다른보기에서 나가 :

def your_other_view(request): 
    ... 
    request.session.get('file_path') 

를 사용하기위한 템플릿에 전달 당신은 당신의보기에서 세션에 액세스 할 수 있습니다.

있습니다 (Django docs에서), 보안에 대해 걱정할 필요가 없습니다 :

그것은 서버 측에서 데이터를 저장하고 전송 및 쿠키의 수신 추상화합니다. 쿠키에는 데이터 자체가 아닌 세션 ID가 들어 있습니다.

+0

이 답변은 나의 것보다 낫습니다. 다시 돌아가서 일부 코드를 업데이트해야 할 것 같습니다. – girasquid

+0

@Luke 그게 좋은 일이야! :) –

+0

고마워요! 그게 작동 – Edwin

1

모델을 사용하여이 문제를 해결하는 경향이 있습니다. 파일을 추적하고 마지막으로 업데이트/업로드 한시기입니다. 그렇게하면 숨겨진 입력에서 나중에 검색 할 ID를 포함시킬 수 있습니다. 따라서 공격자가 양식 필드를 엉망으로 만들고 싶다면 얻을 수있는 모든 것은 다른 백업 파일입니다.).

파일을 처리하기 위해 임시 모델을 만든 다음 두 번째 단계가 끝날 때 파일 처리가 끝나면 파일을 삭제하는 것이 좋습니다.

관련 문제