안녕하세요.

이미지 리사이즈 애드온을 제작하는 도중 질문드릴 점이 있어 글 남깁니다.

 

대상이 된 웹사이트에는 업로드 되는 이미지들의 사이즈가 매우 크고, 개수도 만만치 않습니다.

 

이러한 상황에서, 서버단에서 리사이즈 작업을 진행한다면 부하가 심하리라고 생각되어 몇가지 방법을 생각했는데,

그 중 하나가 브라우저에서 이미지 가공을 완료한 뒤 DataURI 값을 AJAX로 서버에 전달하는 방식입니다.

전달받은 DataURI는 서버에서 디코딩하여 기존 첨부된 이미지에 덮어씌우고요.

 

위 방식대로 제작은 해 두었으나, 보안문제가 있을까 싶어 실사용은 꺼리고 있는 중입니다.

 

혹시 이러한 방법이 보안에 위험한 방법일까요?

만약 그렇다면, DataURI 값을 전달할때, 서버단에서는 어떠한 검증작업을 하여 위험을 방지할 수 있을까요?

  • profile

    일반 파일 업로드와 동일하게 저장하고, 서버단에서 base64 decode 외에는 별다른 처리를 거치지 않는다는 가정 하에 보안상 차이는 없습니다. 파일을 그대로 보내든 data URI로 보내든 클라이언트단에서 보내주는 데이터를 신뢰할 수 없는 것은 마찬가지니까요.

     

    그런데 서버에서 거대한 문자열을 받아서 디코딩하나... 그냥 gd나 imagemagick으로 리사이즈하나... 서버 쪽에서 어느 정도 부하가 걸리는 것을 막을 수는 없을 듯 한데요. 불필요하게 복잡하게 생각하시는 거 아닌가 싶어요.

     

    업로드되는 이미지 사이즈가 크고 갯수가 많다는 것이 어느 정도를 뜻하시는 건가요? 20MB짜리 이미지 하루에 1만 개? 정도라면 웬만한 서버에서는 전혀 문제가 되지 않을 것 같거든요. 많다는 기준이 사람마다 제각각이라...

  • profile ?
    아, 그 기준을 제가 자세히 적지 않았었군요ㅠ
    리사이즈 전 이미지 용량은 50MB 이상 나옵니다. 게시글당 수십개씩 업로드 되구요.
    기존에 보유중인 이미지를 사이트에 왕창 업로드 해야 하는 상황입니다.

    사실 업로드 전에 리사이즈를 해버리면 되는 간단한 일이긴 한데, 사이트 운영자분 말씀으로는...
    양이 너무 많아 업로드 작업을 일일알바(?)를 동원해 진행한다고 합니다. 리사이즈까지 맡기기에는 무리라고..
    일주일정도 업로드 해보고, 이후에는 불특정 다수에게 자료 업로드를 맡길 예정이라고 하구요.

    정확하지는 않습니다만.. 가로 4000px, 세로 8000px가 최소사이즈인데,
    한번에 수십개씩 업로드 될 환경이다보니, 서버에서 처리할 양도 무지 많아질 것 같네요ㅠㅠ
    DataURI로 넘기면, 이미 리사이즈가 완료된 값이다 보니 조금은 부하가 덜하지 않을까 싶어서요.
  • ? profile
    사이즈가 그 정도 된다면 서버단에서도 그냥 PHP에서 gd를 쓰면 안되겠네요. 메모리 소비량이 어마어마할 테니... 최소한 imagemagick을 외부 명령으로 호출해야 할 텐데, 이래저래 복잡해지는 것은 마찬가지이니... 클라이언트단에서 리사이즈하는 코드를 구현하셨다면 그대로 사용하시는 것이 편리하겠습니다.