- 8
- 네모
- 조회 수 205
안녕하세요.
이미지 리사이즈 애드온을 제작하는 도중 질문드릴 점이 있어 글 남깁니다.
대상이 된 웹사이트에는 업로드 되는 이미지들의 사이즈가 매우 크고, 개수도 만만치 않습니다.
이러한 상황에서, 서버단에서 리사이즈 작업을 진행한다면 부하가 심하리라고 생각되어 몇가지 방법을 생각했는데,
그 중 하나가 브라우저에서 이미지 가공을 완료한 뒤 DataURI 값을 AJAX로 서버에 전달하는 방식입니다.
전달받은 DataURI는 서버에서 디코딩하여 기존 첨부된 이미지에 덮어씌우고요.
위 방식대로 제작은 해 두었으나, 보안문제가 있을까 싶어 실사용은 꺼리고 있는 중입니다.
혹시 이러한 방법이 보안에 위험한 방법일까요?
만약 그렇다면, DataURI 값을 전달할때, 서버단에서는 어떠한 검증작업을 하여 위험을 방지할 수 있을까요?
+
XE타운에도 올려두었고, 그거 그대로 복사해서 그런지 뭔가 여기서 쓰던 어투와 다르네요ㅋㅋㅋㅋㅋㅋ
작성자
댓글 8
![title : 황금 서버 (30일) title: 황금 서버 (30일)](https://sfuhost.com/./files/iconshop/33055af84f02ddedb19db038cdae0d2f.gif)
![profile image](/files/member_extra_info/profile_image/569/001/1569.png?t=1527385219)
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/145/220/220145.jpg?t=1603012768)
저장시 확장자는 무조건 jpg 로 지정되는데, 예전에 jpg 파일로도 이상한 짓이 가능하다는 말을 들었거든요.
그 당시에 원리를 알아놓지 않고 그냥 그렇구나 하고 넘어갔다가 지금 와서 보니 자료 찾기가 쉽지 않네요ㅠㅠ
jpg 파일로도 웹쉘 업로드가 가능한걸까요?
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![title : 황금 서버 (30일) title: 황금 서버 (30일)](https://sfuhost.com/./files/iconshop/33055af84f02ddedb19db038cdae0d2f.gif)
![profile image](/files/member_extra_info/profile_image/569/001/1569.png?t=1527385219)
아마 최신 버전으로 한다면 크게 문제가 안될겁니다. 구 버전인 경우 파일명 조작이 가능하면 %00와 같은 방법으로 우회하는 방법이 있었습니다.
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/640/096/96640.gif?t=1548527149)
ffmpeg나 이미지매직이 설치되어 있지 않는 서버에서도 사용한 방법인가요?
애초에 이미지 변환 방식을 선택하도록 서버단에서 ffmpeg를 이용한 방법, 이미지매직을 이용한 방법, 브라우저단에서 변환시키는 방법 이렇게 선택하도록 하면 조금더 낫지 않을까합니다.
저는 잘 모르는 분야이기 때문에 보안 이슈에 대해서 문제가 될거다 라는 답은 못드리겠으나, 이미 base64방식으로도 이미지 로드를 많이 하기때문에 큰 문제는 없지 않을까 생각합니다.
참고로 여기는 이미지매직이 설치되어 있습니다!
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/145/220/220145.jpg?t=1603012768)
예. 서버는 가리지않고 base64_decode 사용만 가능하다면 될거라고 생각해요.
따로 선택기능을 추가할 필요는 없는게, 이미 이미지매직을 활용한 리사이즈 모듈은 존재하는데다가...
50MB 이상의 이미지가 게시글당 수십장 업로드 되는 환경에서 사용해야 합니다ㅠㅠ 아무래도 서버 부담이 클 것 같아서요.
사실 업로드 전에 리사이즈 하면 간단한 문제이긴 한데, 알바를 고용해서 업로드 시키면서 리사이즈 작업까지 진행하는건 힘들다고 하더라구요.
여기서는 그냥 이미지프로세스 모듈을 사용하면 간단하지 않을까요! 제 블로그에서도 그걸로 리사이즈 하고 있고..!
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/640/096/96640.gif?t=1548527149)
에디터 자동 완성 모듈과 충돌이 있다는 이야기를 들어서 쉽게 적용하지 못하는 상태입니다.
그리고 base64 방식은 png나 다른 방식도 가능하니 않나요?
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/145/220/220145.jpg?t=1603012768)
앗! 그랬군요..! 스포어용으로 하나 만들어봐야겠습니다..!
리사이즈의 용도가 쓸데없이 큰 이미지들의 용량을 줄이는게 목표니까...
굳이 png를 지원할 필요는 없다고 생각했지요. 어떤 이미지를 첨부하든, 다 jpg로 변환해서 저장시키면 된다는 생각에..!
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/640/096/96640.gif?t=1548527149)
jpg면 충분하지요. 투명이미지 아니고서야 굳이 png를 유지할 필요는 없으니깐요. ㅋㅋ
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
그냥 직접 AJAX처럼 흉내내어 DataURI를 전달하려는 시도가 있을 수도 있겠네요.
이 부분은 어렵게할 수는 있겠지만 불가능하게는 어려울 것 같아요. (ex. 업로드 요청을 할 때마다 세션의 값을 증가시키는 방법)
물론 이 방법으로만은 취약하지는 않겠지만 다른 취약점과 겹치면 웹쉘까지도 업로드 할 수 있겠습니다. (물론 네모님이 다른 취약점을 만드실 일은 없겠지만요 ㅎ..)
애초에 base64로 인코딩을 해서 넘어가니 방화벽이 우회가 가능할수도 있고요..