언어&프레임워크/Node.js
[Node.js]입력 정보에 대한 보안
밍풀
2023. 1. 17. 23:56
입력정보에 대한 보안
지금 앱의 보안 위험 요소
데이터베이스 이용해서 데이터 관리하는
아이디 패스워드가 있어야 가져올 수 있음
password.js 파일에 모듈을 만듦
주소창에 localhost:3000/?id=../password.js
입력 시
위의 코드가
위와 같이 인식되고, ../ 는 상위디렉토리의 의미이므로 data의 상위디렉토리에 있는 password.js 를 인식함
파일 생성 상태는 위와 같고 data 상위 디렉토리의 web1 의 password.js 를 인식하는 거임
그래서 아래와 같이 중요한 정보가 웹페이지에 출력되어 버림
이런식으로 쿼리스트링을 조작해서 내 컴퓨터를 탐색할 수 있게 됨
path.parse 를 이용해 ../password.js경로를 분석하기
이를 이용해서 사용자로부터 경로로 들어오는 모든 코드를 바꿔줘야함
base이용하면 경로를 탐색하는 정보 새탁가능
외부에서 들어온 정보
위와 같은 코드 수정 필요함
위와 같이 path.parse().base를 활용해 코드 수정하면 base는 딱 파일 이름만 알려주기 때문에
../ 가 포함되어 상위디렉토리 파일을 탐색하는 거와 같은 위험을 제거할 수 있음
저 id자리에 ../ 이 들어와 버리면 내가 의도한 data파일 안에 있는 파일만 읽는게 아니라 내 컴퓨터에 있는 다른 폴더안의 내용도 읽어버리기에
코드 수정하면 아래와 같이 ../ 입력해도 내용 나오지 않게됨
위와 같이 삭제하는 코드도 외부로 부터 들어온 정보를 바탕으로 파일탐색하기에 path.parse 이용해 코드수정