2017-12-01 1 views
0

정확한 확장자를 찾는 방법이 있습니까? 예를 들어 확장자가 .csv 인 경우 누군가가 수동으로 확장자를 .xlsx로 변경했습니다 (예 : 데스크탑에서 .csv 확장자를 수동으로 변경). pdf) .where. 이제 파일 확장명은 .xlsx 형식으로 변경되지만 내용은 .csv 형식에 속합니다. 따라서 C#에서 이러한 종류의 악성 파일을 찾을 수있는 방법이 있습니다. 코드 아래 는 파일 확장자를 얻을 수 있지만, 파일 확장자가 수동으로 변경되었는지 여부를 알거나하지C# 악의적 인 파일 형식 변경

Path.GetExtension(Be.FileName).ToLower().Contains(".csv") 

을 내가 모두 콘텐츠 형식 확장을 확인하고 싶은 일부 침입자가 파일을 변경할 수 있습니다 extension.Since를 제출하지 않습니다 우리가 원하는 확장자로 확장합니다. 그러나 파일 내용은 다른 확장자에 속할 수 있습니다. 위의 코드는 파일 이름 확장명 만 찾고 정확한 확장명은 포함하지 않습니다.

Google은 이러한 종류의 파일을 찾기 위해 CSVhelper에 다른 속성이 있습니까?

아무도 도와 드릴 수 있습니까?

+6

"정확한 확장자"를 찾았지만 실제로는 "파일의 실제 내용 형식"과 다릅니다. 파일 이름과 내용 사이에 보장 된 관계는 없습니다. –

+0

어떤 종류의 휴리스틱 파일 검사기를 만들 수는 있지만, 그럴만한 경우는 확실하지 않을 것입니다. 당신은 파일로 "원하는"것을 알고 있습니다 - 그것을 파싱하고, 에러를 잡아 내고 사용자를 부추 깁니다. 쓰레기를 버리고. –

+0

또한, 두 개의 파일이 정확히 동일한 * 내용을 포함 할 수 있지만 의도 한 * 해석은 다릅니다. 예 : HTTP의 content-types이 처리하려고하는 문제. –

답변

0

CSV는 매우 간단한 파일 유형입니다. 파일을 프로그램의 입력으로 사용하기 전에 파일 파서를 작성하십시오.

파서는 다음을 수행합니다. 파일의 무결성을 CSV 파일로 증명합니다. 중간의 분리 자와 끝의 새 줄 분리자를 검사하면됩니다.

파일의 제목이 올바르게 지정되어 있고 CSV로 올바르게 포맷 된 경우에만 작업을 진행합니다.

두 번째 방법은 약간 복잡 할 수 있습니다. 전체 파일 시스템을 제어 할 수 있다면 알림 파일에 파일 로거를 배치 할 수 있습니다. 따라서 파일의 모든 변경 사항은 프로그램에보고됩니다. 이것은 궁극적으로 많은 자원을 요하며 때때로 실패 할 수도 있습니다.

관련 문제