2009-04-30 4 views
3

기준은 기본적으로 이것이다 :짧고 고유 한 파일/폴더 이름을 생성하는 좋은 방법은 무엇입니까?

  • 폴더에 대한 24-48hrs
  • 폴더 이름을 존재하게됩니다
      의 (a URL에 사용 된 경우) 사용자
    • 폴더 이름은 짧아야이 쉽게 추측 할 수 없습니다

      printf('%u',crc32(microtime(true))); 
      

      DET : 5-15

    초기의 생각을가 문자 ails : 파일을 업로드 할 때 기본적으로 업 로더 이름이 지정된 고유 한 파일 이름을 유지하려고합니다. 이름 지정 충돌을 피하기 위해 고유 한 이름의 디렉토리에 파일을 넣고 싶습니다 ...

  • 답변

    0

    Ruby에서 다음과 같이 지정했습니다.

    require 'digest/md5' 
    Digest::MD5.hexdigest(Time.now.to_s) 
    
    => "f531384b3cc8c60b7c5b7ad087cb0ae4" 
    
    +0

    태그가 있습니다 ... – SilentGhost

    0

    "보안상의 문제"와 같은 것 같습니다. 잠재적으로 민감한 데이터를 생성하고 아무도 그 위치를 추측 할 수 없다는 기대가 있기 때문에 안전성이 보장되는 방법으로 짧은 시간 동안조차도 데이터를 노출하는 것을 추천합니다. 무차별 공격이 존재하며, 이러한 유형의 "보안"을 찢을 수 있습니다.

    +0

    다른 사용자가 쉽게 추측 할 수없는 반면 특정 사용자에게 임시 링크를 보내는 것이 좋습니다. – Miquel

    0

    이름을 생성하기 위해 날짜와 시간을 사용

    0

    내가 좋아하는 뭔가를 사용하십시오 :

    $salt='Whatever you want'; 
    $folderName=SHA1($salt.date('U')); 
    

    날짜 ('U') 유닉스 신기원 (1970 년 1 월 1 일 이후 경과 한 초를 반환합니다 00:00:00 GMT) 그래서 동시에 여러 폴더를 생성하지 않는 한 고유 할 것입니다.

    그럴 경우 $ salt 값을 미묘하게 변경하십시오 (사용자 이름 또는 임의 번호로 변경).

    1

    고전적인 기법은 원하는 입도에 기반 등

    + uploader-name 
        + 20090401 
         + 010000  // hhmmss 
         + 013000  // hhmmss 
         + 014500  // hhmmss 
        ... 
    
        + 20090402 
    

    추가 레벨과 같은, 추가 "A", "B", "C"를, ... 보인다.

    이것은 작동합니다. 사용자가 파일에 연대순으로 관련되어 있으면 좋습니다.

    당신은 몇 가지 존재 열거를 끝내지 만, 그렇게 고통스럽지는 않습니다. 필자는 PHP를 비롯한 여러 번 이것을 사용했습니다. 주로 사용자 저항이 내가 찾은 대안보다 낮기 때문입니다.

    당신이 날짜 식을 아름답게 수 있도록 경 사진 경우 - 시간에 해시 (MD5 또는 SHA 중 하나)을 내놓고 "2009 4 월-01", "오전 1시 45분"등

    0

    그것을 만드는 사용자가 디렉토리가 생성 된시기를 대략 알고 있다면 추측 할 수 있습니다. 그들이 할 수있는 일은 간단한 스크립트를 설정하여 몇 초만에 다룰 수있는 모든 가능성을 생성 한 다음 사이트를 방문하여 응답을 찾는 것입니다. 소금을 첨가하는 것은 도움이되지만 장기적으로는별로 도움이되지 않습니다.

    OP에는 위의 것이 모든 방법에 해당됩니다. 매우 빠른 서버를 실행하는 경우 임의의 디렉토리에 대한 히트를 모니터해야합니다. 5 글자 디렉토리 만 있으면 누군가가 수동으로 사이트를 공격하여 디렉토리를 발견 할 수 있음을 의미합니다. 15는 다소 증가하지만 일부 시스템에서는 스크립트 방식으로 처리하므로 가능성이 없습니다.

    0

    C++ 표준은 cstdio (stdio.h)에서 tmpfile 및 tmpnum 함수를 모두 가지고 있으며 이에 따라 임시 파일과 임시 파일 이름을 만듭니다. tmpfile은 프로그램의 끝에서 삭제됩니다. 나는 그들을 연결시킬 것이지만 슬프게도 나는 아직 링크를 게시 할 수 없다.

    관련 문제