제목 | 파일 업로드 실패. mime_type 체크 로직 | ||
---|---|---|---|
카테고리 | PHP | ||
글쓴이 | 그동안 | 작성시각 | 2021/06/14 15:09:33 |
|
|||
궁금한 것이 있어 문의 드립니다. 혹시 아시는 분 계시면 댓글 좀 부탁 드립니다. ms 워드 파일만 업로드되도록 아래와 같이 개발했는데, ms워드 파일인데 가끔식 업로드 안된다는 사람들이 있어서요. log를 확인해 보니까, $lang['upload_invalid_filetype'] 여기에 걸린 것으로 확인됩니다.
< 궁금한 점 > 'allowed_types' => 'docx|doc|DOCX|DOC' 여기에 doc를 넣으면 mimes.php의 doc 부분에 해당하는 타입이 있는지 확인하게 되는 것이 맞는지 궁금합니다. 업로드가 안된다는 상황이 심심치 않게 발생해서, 심지어는 doc 부분에 text/html 까지 넣었는데도 발생해서요. 궁금합니다.
[컨트롤러 - 파일업로드] $config = array( 'upload_path' => 'uploads/common_file/', 'allowed_types' => 'docx|doc|DOCX|DOC', //ms워드 파일만 업로드 가능하게 'encrypt_name' => TRUE, 'max_size' => '2048' ) );
[config > mimes] 'doc' => array('application/msword', 'application/vnd.ms-office','application/vnd.oasis.opendocument.text','application/octet-stream','text/html'), 'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip', 'application/msword', 'application/x-zip', 'application/octet-stream','text/html'),
[upload_lang.php] $lang['upload_invalid_filetype'] = "업로드 불가 파일. 정상적인 워드 파일이 아닙니다.";
|
|||
다음글 | 하나의 서버에서 코드이그나이터 버전 2가지 사용 (7) | ||
이전글 | 기존 서버와 새로운 서버에 관하여 (6) | ||
변종원(웅파)
/
2021/06/14 15:17:27 /
추천
0
|
그동안
/
2021/06/14 16:29:50 /
추천
0
안녕하세요, 웅파님. - 'allowed_types' => 'docx|doc|DOCX|DOC' 여기에 doc를 넣으면 mimes.php의 doc 부분에 해당하는 타입이 있는지 확인하는 것은 맞는거지요? - 댓글 주신대로라면, 실질적으로 ms워드 파일인지 정확히 구분할 수 있는 방법은 없다는 말씀인거죠? (여러가지 mine_type을 추가하다보면, ms워드 파일이 아닌 경우도 통과해 버리므로. 예.일전 동일한 경우가 있어 확인해보니 ms워드 파일인데 타입이 text/htm 이더군요. 그래서 추가했습니다)
|
변종원(웅파)
/
2021/06/14 18:29:13 /
추천
0
그동안/ 네 mime type 만으로 거르는 것은 불가능합니다. 확장자도 체크하고 업로드된 파일을 실제 읽어서 워드 파일이 맞는지 확인하는 절차를 거쳐야 좀 안심을 합니다. 정상적으로 만들어진 파일(워드에서 저장)인데 text/html이 나오지는 않을 겁니다. 그런 경우는 운영으로 푸는 방법(cs쪽에 doc인데 업로드 안되면 받아서 확인해보고 정상ms파일이 아님을 알리고 보안때문에 그러니 정상파일을 사용하라고 공지)과 위처럼 프로그램에서 직접 열어보는 수밖에 없습니다. |
mime type 으로 검색해보시면 얼마든지 변조가 가능하고 우리는 ms doc 이라고 알고 있지만 다른 mime type으로 들어가 있는 경우가 많습니다.
그 업로드된 파일의 mime type을 출력해보시고 그 타입을 추가하세요.