티스토리 뷰

들어가며

  • Apache poi를 사용하여 Exel write 기능을 구현하는데 아래와 같은 에러가 발생하면서 실패하였다.
Zip bomb detected! The file would exceed the max. 
ratio of compressed file size to the size of the expanded data. 
This may indicate that the file is used to inflate memory usage and thus could pose a security risk. 
You can adjust this limit via ZipSecureFile.setMinInflateRatio() 
if you need to work with files which exceed this limit

원인

  • 검색해보니 "Zip bomb" 이라는 용어는 일종의 공격 기법으로 작은 Zip 파일안에 압축되지 않는 매우 큰 파일을 집어넣어 디스크 공간에 영향을 줄 수 있다고 한다. 
  • .xlsx 파일은 XML 파일이 포함된 압축 파일이기 때문에 POI에서 "Zip Bomb" 관련한 취약점이 발생할 가능성이 있다고 한다. 
  • 결론적으로 Apache Poi는 이러한 취약점을 방지하기 위해서 기본적으로 문제의 소지가 되는 상황에 대해서 reject를 시키고 있다고 한다.
    • 문제가 될 수 있는 상황은 주로 많은 행 혹은 많은 열을 가지는 경우라고 함
  • 나의 경우는 5000개 정도의 열을 가지고 있어서 문제의 소지가 있다고 판단한 것 같았다.

해결방법

  • 이러한 safeguard를 풀기 위해선 아래와 같이 설정을 work book을 생성하기 전에 해주면 된다.
ZipSecureFile.setMinInflateRatio(0);

관련글

 

[Java] Apache poi 엑셀 Cell 스타일링 방법 (배경, 테두리, 폰트 등)

Java Excell Cell Styling Apache Poi 라이브러리를 사용하여 Excel을 다루는 경우 특정 Cell 에 스타일을 적용해야 할 때가 있습니다. 이때 Apache Poi 라이브러리를 사용하여 스타일링을 하는 방법에 대해서 ��

jinseongsoft.tistory.com

 

 

JAVA 엑셀 파일 불러오기

Java 엑셀 파일 불러오기  이번 시간에는 Java 에서 엑셀 파일을 불러와 데이터를 가져오는 방법에 대해서 알아보겠습니다. 우선 엑셀파일을 준비하시구요  저는 이 파일을 사용하겠습니다.  우�

jinseongsoft.tistory.com

 

 

반응형
댓글