- 회사에서 일하던중 기존에 개발되어있던 소스가 해당코드처럼 링크를 클릭하면 get방식으로 다운로드 하는 방식이었습니다. 그런데 이게 웹 취약성에 걸려 post로 바꿔달라는 요구 사항이 있어서 그 내용에 관한것을 정리하고자 합니다.
- get 방식 (이전방식)
<a href="/dashboard/fileDownload.do?type=5&sn=1" target ="_blank" class="gray_btn2_line pdfDown">PDF다운로드</a>
- post 방식 (변경한방식)
<a href="javascript:void(0);" onclick="fileDownload(this)" type='5' sn='1' target ="_blank" class="gray_btn2_line pdfDown">PDF다운로드</a>
- 더 나은 방식이 있을수 있겠지만, 저는 기존에 get방식에서 뒤에 붙는 파라미터를 attribute로 선언을하여서 넣어줬습니다. (수정하고자한 프로젝트에 개발되어있던 방식이 type 마다 해당 파일을 찾는식으로 개발이 되어있음)
common.js
//파일다운로드 post 방식
function fileDownload(target){
const type = $(target).attr("type");
const sn = $(target).attr("sn");
const formObj = $("#downloadForm");
formObj.find('input[name=type]').val(type);
formObj.find('input[name=sn]').val(sn);
formObj.attr("action", "/fileDownload.do");
formObj.attr("method", "POST");
formObj.submit();
}
- ajax로 처음에 post 방식으로 다운로드 api에 전송해봤는데 ajax로는 다운로드가 되지 않는 현상이 있어서 (구글링 해봤을때도 안된다고함) form 전송으로 처리를 하였습니다.
download form
<!-- download form -->
<form id="downloadForm" method="post">
<input type="hidden" name="type">
<input type="hidden" name="sn">
</form>
- header나 공통 페이지에 넣어서 다운로드 클릭시 해당 hidden값에 값을 setting후 post로 다운로드 api에 전송하는 방식입니다.
다운로드 api는 인터넷에 예제가 많기 때문에 생략하겠습니다.
'스프링' 카테고리의 다른 글
InteliJ UTF-8 한글깨짐 설정 (0) | 2023.09.20 |
---|---|
A problem occurred configuring root project (0) | 2022.12.27 |
spring boot restart시 query 실행하기 (0) | 2022.11.29 |
Cannot find method 'value' (0) | 2022.11.25 |
Cannot resolve symbol 'NotBlank', Cannot resolve symbol 'Pattern' (0) | 2022.11.23 |