2013-06-13 1 views
2

appengine docs에서 언급 한 바와 같이 일반 BLOB 처리기를 구현했습니다. 핸들러는 blob의 키 문자열을 알고있는 한 임의의 blob을 제공합니다. 클라이언트가 파일을 다운로드하는 데 사용할 수있는 URL을 쉽게 작성하는 데 사용하고 있습니다. 클라이언트 A가 URL을 검사하여 파일을 다운로드하고 Blob 키 (예 : 1CX2kh468IDYKGcDUiq5c69u8BRXBtKBYcIaJkmSbSa4QY096gGVaYCZJjGZUpDz == str(BlobKey))를 찾으면이 키를 리버스 엔지니어하여 클라이언트 B의 파일을 다운로드하는 데 사용할 수있는 다른 키를 쉽게 만들 수 있습니까? 또는 키에 임의의 구성 요소가 추가 되었습니까? 키의 캐릭터 라인 표현이 비밀 보이지만, 암호화되지 된다str (BlobKey)은 얼마나 안전합니까?

주 : 참고로

은 약 str(db.Key), 내 문제를 제기 무엇 인 this note있다! 종류 및 식별자 인 원시 키 데이터로 다시 변환 할 수 있습니다. 이 데이터를 사용자에게 공개하고 싶지 않다면 ( 은 다른 엔터티의 키를 쉽게 추측 할 수 있음)이 문자열을 암호화하거나 다른 것을 사용하십시오.

, 어떻게 create()은 "선택"않습니다 나는 filename 매개 변수를 지정하지 않는이 같은 파일을 생성하고, 그래서 문제가 귀결 생각 filename가 지정되지 않은 경우? 난 임의의 파일 이름을 생성하고 이중 안전하게 여기에 전달할 수 있다고 생각합니다.

file_name = files.blobstore.create(mime_type='application/octet-stream') 

답변

2

블롭 키는 추측 할 수 없습니다. 사용자가 하나의 키를 가지고 있으면 다른 키를 추측 할 수 없습니다. 전체 경로 정보를 포함하는 데이터 저장소 키와 달리 Blob 키는 이러한 데이터를 인코딩하지 않습니다. 설명대로 사용자가 공격하는 위험없이 안전하게 공유 할 수 있습니다. -

의 Blob 만들 때

+0

안녕하세요. 올바른 정보가 아닙니다. 이미지 게재 URL을 사용하는 경우 결과 URL은 https://developers.google.com/appengine/docs/python/images/functions로 추측 할 수 없지만 BLOB 키에는 이러한 속성이없는 것으로 보입니다. "Blobstore 값에 대한 액세스가 제한되어야하는 경우 사용자가 제출 한 데이터에서 계산 된 키를 기반으로 값을 제공 할 때주의해야합니다."라는 다소 모호한 인용구가있는 것 같습니다. https://developers.google.com/appengine/docs/python/blobstore/blobkeyclass 보안에 대한 자세한 내용을 알려주십시오. –

1

이 파일 이름을 지정합니다. (나는 이러한 주장에 대한 문서를 찾을 수 없습니다 이것은 내 기억에 근거) :

name = ..... 
file_name = files.blobstore.create(mime_type='application/octet-stream', _blobinfo_uploaded_filename=name) 

을 그리고 당신은 (캐릭터를 사용할 필요가 없습니다 BlobKey). BlobKey가 게재 URL의 일부일 수 있습니다.