Intro
프로젝트에서 접한 checksum의 개념에 대해 정리해보려 한다.
프론트엔드에서 React-Dropzone-Uploader 라이브러리를 활용하여 파일 업로드를 구현했다.
React Dropzone Uploader 라이브러리
https://react-dropzone-uploader.js.org/
https://www.npmjs.com/package/react-dropzone-uploader
파일 업로드시 저장소에 중복된 파일이 누적되는 것은 비효율적이라 판단하여 checksum을 통해 중복된 파일은 기존의 저장 위치를 바라보게 설계가 진행되었으며, 덕분에 checksum이라는 개념을 알게 되었다.
Checksum(검사합)이란?
네트워크를 통해서 전송된 데이터의 값이 변경되었는지(무결성)를 검사하는 값이다. 무결성을 통해서 네트워크를 통해서 수신된 데이터에 오류가 없는지 여부를 확인한다.
원래는
1. 송신측에서, 전송할 모든 데이터를 16 비트 워드 단위로 구분하고,
2. 1의 보수를 취하고, 그 합에 대한 결과를 전송하면,
3. 수신측에서, 같은 합을 해보아서 오류를 검출하는 방식이라고 한다.
체크섬이 맞아 떨어지지 않는다면 메시지가 손상되었다고 결론을 내릴 수 있다.
하지만 워드의 순서가 바꾸어지는 오류에 대한 검출은 하지 못하는 등 한계가 있다고 한다.
하지만 우리 프로젝트에서는 중복된 파일이 과도하게 쌓이는 것을 방지하는것이 목적이기에, 전송된 파일을 백엔드에서 체크섬을 통해 중복검사를 할 뿐이다.
프론트엔드 ↔ 백엔드 파일 소통 방식
1. 사용자가 Form에서 파일 업로드 즉시 바로 백엔드로 파일을 전송한다. (파일 Id 포함)
2. 백엔드는 받은 파일을 저장하고 checksum을 통해 중복검사를 실시한다.
3. 중복되지 않을 경우 그대로 저장하고 중복된 파일일 경우 저장되어 있는 주소값을 확인한다.
4. 프론트엔드에서 Form Submit을 할 때 이벤트 id + form 정보 + 업로드한 파일 Id 정보를 같이 보내준다.
5. 백엔드에서 이벤트 id와 파일 id를 연결함으로서 제출된 이벤트의 정보와 첨부파일이 연결된다.
참고
http://www.ktword.co.kr/test/view/view.php?m_temp1=1477
'인증 & 보안' 카테고리의 다른 글
[인증 & 암호] 메세지 위변조를 확인하는 MAC & HAMC (0) | 2023.12.10 |
---|