2012-12-12 6 views
0

csv 파일 업로드 요구 사항이있는 응용 프로그램이 있습니다.csv 파일을 Java 서버에 업로드하는 방법

모든 것이 잘 작동합니다. 확장자가 .csv 인 파일을 업로드하고 있습니다.

이제 여기에 문제가 있습니다. 다른 사람이 exe ​​ 파일을 업로드하려고 시도 할 수 있습니다. 확장자를 .csv으로 변경하고 서버에 업로드하십시오. 완벽하게 업로드하고 있습니다. 어떤 사람들은 mimetype을 사용하여 파일을 업로드 할 것을 제안했습니다. 나는 this 튜토리얼을 따른다.

csv 파일의 경우 mimetype이 null입니다.

그럼 csv 파일 만 업로드하는 방법을 알려주십시오. 그가 바로 추적 ONT 사전

답변

1

덕분에, 당신은 수 있습니다. 파일 확장명을 신뢰하는 대신 파일 검사를 수행해야합니다.

직접 프로그래밍하거나 타사 라이브러리 (현재 수행중인 작업)를 사용해야합니다.

타사 프레임 워크를 계속 사용하는 경우 구성 문제가있는 것으로 간주해야합니다. 내가 도서관을 모르기 때문에 나는 당신의 묘사에서 말할 수 없다.

CSV 파일을 인식하는 데만 관심이 있다면 적어도 이해하고 제어 할 수있는 간단한 것을 권하고 싶습니다. 이 접근법과 같은 :

CSV 파일은 요소의 동일한 번호와 0..n 라인으로 구성되어 있다고 가정. 줄, 다음 문자 중 하나로 구분됩니다.,;

누군가가 구현에 대한 지식을 가지고 의도적으로 시스템을 공격하지 않는 한 EXE 파일이이 구조를 가질 가능성은 거의 없습니다.

첫 번째 몇 줄을 읽으십시오.

regexp ([,;])에서 그들을 분리하십시오.

결과의 요소 수가 같은지 확인하십시오.

안전을 위해 동일한 문자로 분리되어 있는지 확인하십시오.

1

mimetype을 설정하더라도 파일 확장자에서만 결정될 것으로 추측됩니다. 따라서 .csv을 설정하면 여전히 무시됩니다.

문자 데이터 이외의 다른 문자를 찾거나 파일을 무시하면 ASCII 데이터 파일을 읽는 것뿐입니다. 숫자 범위를 통해 반복하고 비교하거나 문자열로 읽고 일반 표현을 사용했습니다. [^\\p{ASCII}]

1

아는 한, 다른 사람이 귀하의 서버에 파일 형식을 업로드하지 못하도록 막을 수 없습니다. 확장 프로그램을 변경하는 것과 같은 문제가 발생했습니다. 유일한 가능성은 파일을받은 후 * .csv로 파싱을 시도하는 것입니다. 성공적으로 파싱 한 경우 저장소에 저장하고 성공 메시지로 응답하고 그렇지 않은 경우 파일을 무시하고 오류 메시지로 응답합니다.

분명히 parse the csv file client side with Javascript 수 있지만 항상 파일 서버 쪽의 유효성을 검사해야합니다.

Myme 유형은 서버에 예상되는 유형 만 알려주지 만 다른 사람이 사용자에게 비 csv 파일을 보내지 못하게합니다.

관련 문제