6

, 그들은 이미지 파일을 저장할 같은 :클라우드 스토리지/CDN의 파일 이름을 무작위로 지정하는 이유는 무엇입니까? 트위터와 같은 소셜 네트워킹 사이트에 프로필 사진을 볼 때

http://a1.twimg.com/profile_images/1082228637/a-smile_twitter_100.jpg 

또는 20110912. 내가 생각할 수있는 유일한 즉각적인 혜택을 같은 경로에 어딘가에 날짜 봇이 스토리지에있는 모든 파일을 선형 방식으로 다운로드하고 다운로드하는 것을 차단합니다. 다른 혜택이 누락 되었습니까? 무작위 배정을하는 가장 좋은 방법은 무엇입니까?

아마존 S3를 사용하고 있으므로 모든 정적 컨텐츠를 하나의 하위 도메인에 제공하게됩니다. 제 계획은 데이터베이스에 정수 ID를 저장 한 다음 URL을 ID와 연결하여 위치를 형성하는 것입니다.

답변

11

공개 URL에서 암호화 방식으로 식별자를 스크램블하는 이유 중 하나는 기업의 성장률이 항상 공개되지 않기 때문입니다.

단순히 새 사용자 계정을 만들거나 이미지를 업로드하여 현재 ID를 추측 할 수있는 경우 외부 사람은 정기적으로이를 수행하고 ID 수를 확인하여 증가율 (또는 상한선)을 계산할 수 있습니다 경과 시간 동안 사용되었다.

지수가 급상승하고 있는지 여부에 관계없이 경쟁 업체 또는 비즈니스 분석가가 스스로 추론 할 수있게하는 대신이 정보의 공개를 제어 할 수 있기를 원합니다.

오프라인 예는 인보이스 및 체크 번호입니다. 당신이 정기적으로 회사에 의해 요금을 받거나 회사로부터 돈을받는다면, 그 기간에 작성한 청구서 나 수표의 수를 알 수 있습니다.

http://metacpan.org/pod/Crypt::Skip32

그것은에 기재된 Skip32 알고리즘의 직접적인 변환이다 :

여기 가다랭이를 기반 양방향 암호화를 사용하여 32 비트의 ID를 스크램블링 I 유지 CPAN (펄) 모듈의 그렉 로즈하여 C :

http://www.qualcomm.com.au/PublicationsDocs/skip32.c

이 접근법을 사용하면 각 32 비트 id가 원본 ID로 되돌릴 수있는 (사실상 무작위로) 해당 32 비트 숫자로 매핑됩니다. 데이터베이스에 여분의 것을 저장할 필요가 없습니다.

URL에 표시하기 위해 스크램블 된 ID를 8 자리 16 진수로 변환합니다.

ID가 429 억 (32 비트)에 도달하면 더 많은 것을 지원하기 위해 URL 구조를 확장 할 계획이 필요하지만 가능한 한 오랫동안 URL을 짧게하는 것이 좋습니다.

+0

나는이 생각을 좋아한다. 나는 아이디 생성 전략을 다시 생각해야 할 것이다. – Adam

2

주로 이름 충돌을 방지합니다. 한 명 이상이 "IMG_0001.JPG"를 업로드 할 수 있습니다. 또한 하나의 디렉토리에있는 파일의 수에 대한 제한을 피할 수 있으며 여러 서버에서 이미지를 파쇄 할 수 있습니다. 아무리 큰 사진 일지라도 Twitter 나 Facebook과 같은 거대한 사이트는 모든 사진을 한 서버에 저장할 수 없습니다.

+0

트위터는 Amazon S3를 사용하므로 서버 또는 디렉토리의 개념에 대해 걱정할 필요가 없습니다. 그들은 하나의 디렉토리에 1 조 개체 (또는 많은 수의 개체)를 저장할 수 있으므로 걱정할 필요가 없습니다. 필자는 MySQL에서 자동 증가 정수 열을 사용하여 S3에서 해당 파일 이름으로 작동하므로 이름 충돌이 문제가되지 않습니다. 봇이 모든 파일을 체계적으로 다운로드하지 못하게하는 좋은 방법이 있다고 생각합니까? – Adam

+0

특정 파일을 찾으려는 디렉토리에 파일을 나열하고 싶다면 걱정할 필요가 없습니다. – ceejayoz

+0

다른 위치 (데이터베이스, JSON 문서 등)의 파일 위치에 대한 메타 데이터를 저장해야합니다. Twitter에서 Amazon S3를 사용하고 실제로 원한다면 모든 이미지를 a1.twimg.com/*에 저장할 수 있다는 사실을 알고 있습니다. Amazon의 클라우드는 하드웨어를 처리하므로 디렉토리의 관점에서 생각할 필요가 없습니다. S3에 대해 구체적으로 묻기 때문에 샤딩과 클러스터링은이 경우 문제가되지 않습니다. – Adam

4

URL을 변경하면 안전하지 않은 오래된 자산을 무효화 할 수 있습니다.

사용자가 비공개 이미지를 저장하도록 허용하려는 경우에도 필요합니다.사용자 계정 이름/ID/경로의 경로 공제 금액을 사용하면 CDN에 자산을 저장하자마자 개인 정보 설정이 쓸모 없게됩니다.