Coding 공부/JavaScript

[javaScript_Web] 파일 시스템 경로 접근 불가 해결 방법

CBJH 2024. 6. 18. 17:56
728x90
반응형
파일 시스템 경로 (D:/upload/) 는 브라우저에서 직접 접근 불가! 🙅‍♀️🙅‍♂️ (보안 문제!)

혹시 이미지를 불러올 때 <img src="D:/upload/${result.fileName}">처럼 로컬 파일 시스템 경로를 사용했는데 이미지가 안 나온다면? 🤔 당황하지 마세요! 이건 보안상의 이유로 브라우저가 직접 파일 시스템에 접근하는 걸 막기 때문이랍니다. 😅

 

왜 안될까요? 만약 웹 페이지에서 아무 파일이나 마음대로 읽어올 수 있다면, 개인 정보 유출 등 심각한 보안 문제가 발생할 수 있어요! 😱 그래서 브라우저는 로컬 파일 경로를 통한 접근을 제한하고 있답니다.

어떻게 해결하죠? 정답은 웹 서버를 통한 파일 제공! ✨

 

 

Flask 웹 서버 예제 코드 (Python):

 
from flask import Flask, send_from_directory

app = Flask(__name__)

# 이미지 업로드 폴더 설정
UPLOAD_FOLDER = 'D:/uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

@app.route('/uploads/<filename>')
def uploaded_file(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

if __name__ == '__main__':
    app.run(debug=True)

코드 설명:

  1. Flask 앱 생성: Flask 웹 서버를 생성합니다.
  2. 업로드 폴더 설정: UPLOAD_FOLDER 변수에 이미지 업로드 폴더 경로를 설정합니다. ('드라이브명:/이미지 저장된 폴더명')
  3. 라우트 설정: /uploads/<filename> 경로로 요청이 오면 uploaded_file 함수가 실행됩니다.
  4. 파일 전송: send_from_directory 함수를 사용하여 UPLOAD_FOLDER 에서 해당 파일을 찾아 브라우저에 전송합니다.

 

사용 방법:

  1. 위 코드를 app.py 파일로 저장합니다.
  2. uploads 폴더를 생성하고 이미지 파일을 넣습니다.
  3. 터미널에서 python app.py 명령어로 웹 서버를 실행합니다.
  4. 웹 브라우저에서 http://127.0.0.1:5000/uploads/파일이름.jpg 형식으로 이미지에 접근할 수 있습니다.

 

원리:

  • 사용자가 이미지 URL 을 요청하면, Flask 웹 서버가 uploads 폴더에서 해당 이미지 파일을 찾아서 브라우저에 전송해줍니다. 💨
  • 이때 웹 서버는 다른 파일이나 폴더에 대한 접근을 막아서 안전하게 이미지를 제공해요! 💪

 

보안 꿀팁! 🍯

  • 업로드된 이미지 파일에 대한 접근 권한을 적절히 설정하여 허가된 사용자만 접근할 수 있도록 해주세요.
  • 업로드 가능한 파일 형식을 제한하고, 악성 코드 검사를 수행하여 웹 서버를 더 안전하게 보호할 수 있어요. 🛡️

 

이제 안전하게 이미지를 보여주세요! 😉 웹 서버를 통해 이미지를 제공하면 보안 걱정 없이 웹 페이지에 이미지를 표시할 수 있답니다. 로컬 파일 경로는 조심해서 사용해야 해요! ⚠️