개발기/JAVA

[Java] 파일 λ‹€μš΄λ‘œλ“œ μ‹œ 'μ„œλ²„μ—μ„œ 쀑볡헀더λ₯Ό μˆ˜μ‹ ν–ˆμŠ΅λ‹ˆλ‹€.' 크둬

동 λ”” 2025. 2. 26. 00:10

파일 λ‹€μš΄λ‘œλ“œ μ‹œ Software caused connection abort: socket write error

ν¬λ‘¬μ—μ„œ "μ„œλ²„μ—μ„œ 쀑볡헀더λ₯Ό μˆ˜μ‹ ν–ˆμŠ΅λ‹ˆλ‹€." λ©”μ„Έμ§€ 좜λ ₯

 

❗ 파일λͺ…에 콀마 "," κ°€ λ“€μ–΄κ°€μžˆκΈ°λ•Œλ¬Έμ— λ°œμƒ

 

해결방법

// Response.AddHeader("Content-Disposition", "attachment;filename=" + file.Name+ "");
// 파일λͺ… 감싸기
Response.AddHeader("Content-Disposition", "attachment;filename=\"" + file.Name+ "\"");

βœ… Response.AddHeader("Content-Disposition", "attachment;filename=\"" + file.Name+ "\"");

 

응닡헀더에 ContentType 이외에 νŒŒμΌμ •λ³΄λ₯Ό Header에 μΆ”κ°€ν•˜λŠ” μ½”λ“œ λ•Œλ¬Έμ— λ‚˜νƒ€λŠ” 증상

Internet Exploreμ—μ„œλŠ” λ‹€μš΄λ‘œλ“œμ— λŒ€ν•œ νŒŒμΌμ •λ³΄λ₯Ό 헀더에 λ„£μ–΄μ€˜λ„ 이상이 μ—†μ—ˆμ§€λ§Œ,

ν¬λ‘¬μ—μ„œλŠ” 그것을 취약점 곡격을 μœ„ν•œ μˆ˜λ‹¨μœΌλ‘œ νŒλ‹¨ν•œ κ²ƒμœΌλ‘œ 보인닀.

 

 download file path : /usr/local/..파일경둜../파일λͺ…
10μ›” 26, 2021 1:19:36 μ˜€ν›„ egovframework.com.cmm.util.EgovBasicLogger ignore
ν•΄μ œ: IO Exception
org.apache.catalina.connector.ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:411)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:330)
	at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:436)
	at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:424)
	at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
	at org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper$SaveContextServletOutputStream.write(SaveContextOnUpdateOrErrorResponseWrapper.java:457)
	at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
	at java.io.BufferedOutputStream.write(BufferedOutputStream.java:126)
	at org.springframework.util.StreamUtils.copy(StreamUtils.java:125)
	at org.springframework.util.FileCopyUtils.copy(FileCopyUtils.java:109)
	at egovframework.com.cmm.web.EgovFileDownloadController.cvplFileDownloadJFile(EgovFileDownloadController.java:235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
(μ€‘λž΅)

Caused by: java.net.SocketException: Software caused connection abort: socket write error
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:113)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:159)
	at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:216)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:451)
	at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:352)
	at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:239)
	at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:84)
	at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192)
	at org.apache.coyote.Response.doWrite(Response.java:578)
	at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:406)
	... 100 more

10μ›” 26, 2021 1:19:36 μ˜€ν›„ org.apache.catalina.core.ApplicationDispatcher invoke
심각: μ„œλΈ”λ¦Ώ [jsp]을(λ₯Ό) μœ„ν•œ Servlet.service() 호좜이 μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œμΌ°μŠ΅λ‹ˆλ‹€.
java.lang.IllegalStateException: 이 응닡을 μœ„ν•΄ getOutputStream()이 이미 ν˜ΈμΆœλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
	at org.apache.catalina.connector.Response.getWriter(Response.java:643)
	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:213)
	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:109)
	at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:128)
	at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:121)
	at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:186)
	at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:124)
	at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:78)
	at org.apache.jsp.codeThrowable_jsp._jspService(codeThrowable_jsp.java:178)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	(μ€‘λž΅)

10μ›” 26, 2021 1:19:36 μ˜€ν›„ org.apache.catalina.core.StandardHostValve custom
심각: Exception Processing ErrorPage[exceptionType=java.lang.Throwable, location=/codeThrowable.jsp]
org.apache.jasper.JasperException: java.lang.IllegalStateException: 이 응닡을 μœ„ν•΄ getOutputStream()이 이미 ν˜ΈμΆœλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
	at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:599)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:510)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:602)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:541)
	at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:476)
	at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:419)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:200)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1201)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:319)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: 이 응닡을 μœ„ν•΄ getOutputStream()이 이미 ν˜ΈμΆœλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
	at org.apache.catalina.connector.Response.getWriter(Response.java:643)
	at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:213)
	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:109)
	at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:128)
	at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:121)
	at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:186)
	at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:124)
	at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:78)
	at org.apache.jsp.codeThrowable_jsp._jspService(codeThrowable_jsp.java:178)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
	... 22 more

 

 

 

좜처: 

https://java.ihoney.pe.kr/210 [ν—ˆλ‹ˆλͺ¬(Honeymon)의 μžλ°”guru]

https://devzeroty.tistory.com/entry/ν¬λ‘¬μ—μ„œ-파일-λ‹€μš΄λ‘œλ“œμ‹œ-쀑볡헀더-μˆ˜μ‹ μ΄λΌ-λ‚˜μ˜€λŠ”-경우 [Dev Story..]