programing

Unix 파일 이름에서 제한해야하는 문자는 무엇입니까?

nasanasas 2020. 11. 20. 09:02
반응형

Unix 파일 이름에서 제한해야하는 문자는 무엇입니까?


사용자가 파일 이름을 자유 텍스트로 입력 한 다음 저장 버튼 을 클릭하는 자유 텍스트 항목이있는 다른 이름 으로 저장 대화 상자를 고려 하십시오 . 그런 다음 소프트웨어는 파일 이름의 유효성을 검사하고 이름이 유효한 경우 파일을 저장합니다.

Unix 파일 시스템에서 다음과 같이 유효성 검사에 적용해야하는 규칙은 무엇입니까?

  • 이름은 나중에 특수 문자 등을 이스케이프 처리하기 위해 조작하기 어렵지 않습니다.
  • 규칙은 너무 제한적이어서 파일 저장이 사용자에게 친숙하지 않게됩니다.

기본적으로 Unix 파일 이름에서 제한해야하는 최소 문자 집합은 무엇입니까?


최소 있습니다 슬래시 ( '/') 및 NULL ( '\ 0')


첫째, 당신이 설명하는 것은 블랙리스트 입니다. 더 나은 옵션은 (사용자 관점에서) 문자를 제거하는 대신 삽입하는 것이 더 쉽기 때문에 문자 화이트리스트에 추가하는 것입니다.

유닉스 환경에서 좋은 점은 다음과 같습니다.

  • az
  • AZ
  • 0-9
  • 밑줄 ( _)
  • 대시 ( -)
  • 마침표 ( .)

기본 사항을 다루어야합니다. 공백은 괜찮지 만 상황을 어렵게 만듭니다. Windows 사용자는이를 좋아하지만 유닉스 / 리눅스는 그렇지 않습니다. 따라서 타겟 고객에 따라 그에 따라 선택하십시오.


종종 잊혀지는 경우 : 콜론 (:)은 일반적으로 $ PATH, 즉 실행 파일이 "자동으로"발견되는 디렉토리 목록에서 사용되기 때문에 좋은 생각이 아닙니다. 이로 인해 드라이브 이름에 콜론이 사용되는 DOS / Windows 디렉토리 이름과 혼동 될 수 있습니다.


받아 들여진 답변에 진실이있을 수 있지만 스크립팅이나 기타 작업에 잠재적으로 성 가실 수있는 몇 가지 제한 사항이 있으면 이점이 있다고 생각합니다.

  • 슬래시 (/)
  • 백 슬래시 (\)
  • NULL (\ 0)
  • 틱 (`)
  • 대시 (-)로 시작
  • 별 (*)
  • 파이프 (|)
  • 세미콜론 (;)
  • 인용 부호 ( "또는 ')
  • 콜론 (:)

(-추가하는 것을 꺼려하지만 공간이있을 수 있습니다.)

보시다시피 @Gavin이 제안한 것처럼 화이트리스트를 작성하는 것이 더 나을 수 있습니다 ...


.파일과 폴더를 숨기기 위해 처음에 점 ( )을 추가 할 수 있다는 것을 잊지 마십시오 . 그렇지 않으면 * NIX 이름 규칙 (Wikipedia에서 제공)을 따릅니다.

대부분의 UNIX 파일 시스템

  • 대소 문자 처리 : 대소 문자 구분 보존
  • 허용되는 문자 집합 : 모두.
  • 예약 된 문자 : /, null.
  • 최대 길이 : 255 자.
  • 참고 : 선행. ls 및 파일 관리자가 기본적으로 파일을 표시하지 않음을 나타냅니다.

파일 이름에 대한 위키 백과 문서 링크


FTW 인코딩

봄베가 자신의 대답에 지적, 사용자 입력을 제한하는 것은 명백히 짜증나는 적어도 실망의 경우되지 않습니다. 하지만 개발자로서 우리는 코드와의 모든 상호 작용이 악의적이라고 가정하고 그렇게 취급해야합니다.

특정 문자를 화이트리스트 또는 블랙리스트에 올리는 대신 실제 응용 프로그램에서 두 가지 문제를 모두 해결하려면 사용자 입력을 파일 이름으로 사용하지 않아야합니다.

대신 사용자 입력 (예 : PHP의 bin2hex ) 에서 인코딩 된[a-f0-9] 자체 고안 의 안전한 이름 ( 예 : PHP의 bin2hex ) 또는 임의 생성 된 ID (예 : PHP의 uniqid )를 사용하여 어떤 방법으로 매핑 (take 선택) 사용자 입력에.

인코딩 / 디코딩은 매핑에 의존하지 않고 즉시 수행 할 수 있으므로 실제로 이상적입니다. 사용자는 파일이 실제로 무엇인지 알 필요가 없습니다 . 만큼 그들은 / 파일을 설정받을 수 있으며,이 같이 나타납니다 그들이 원하는 것을 호출 할, 모두가 승자입니다.

By this methodology, the user can call their file whatever they like, hackers will be the only people frustrated, and your file system will love you :-)


Let the user enter whatever name he wants. Artificially restricting the range of characters will only annoy the users and serve no real purpose.

참고URL : https://stackoverflow.com/questions/457994/what-characters-should-be-restricted-from-a-unix-file-name

반응형