[ 입력정보에 대한 보안 ]
데이터베이스 -> id, passwd가 있어야 데이터를 사용할 수 있다
id, passwd를 관리해야 한다!!
만약 비밀번호를 'password.js'라는 파일에 저장해놓고, 입력 정보에 대해 보안을 걸어두지 않으면 아래처럼 접근 시 파일 내용을 모두 볼 수 있게 된다
id 부분에 경로를 넣고 파일 이름을 넣으면 해당 파일의 내용이 그대로 노출되게 된다!!
따라서 이를 방지해줘야한다
이를 막기 위한 노드의 기술 중 path.parse라는 것을 사용해볼것이다
먼저 요렇게 path 변수를 선언하고
이런식으로 path.parse를 통해 정보를 한 번 필터링해서 사용한다 (파싱)
이는 사용자로부터 정보가 들어오는 create, update, delete 에 모두 추가하면된다
[ 출력정보에 대한 보안 ]
사용자가 글을 쓸 떄 위처럼 스크립트 내용을 입력을 하고 등록하면 해당 글을 조회할 떄 아래처럼 스크립트가 실행된다
만약 이게 사용자가 악의를 품고 정보 갈취 등과 같은 것을 했다면 큰일나게 될 것이다
따라서 이를 막는 작업을 해본다
< 출력 보안 방법 >
1. <scipt> 아예 지워버리기
사용자가 입력한 내용 중 <script>는 아예 지워버리는것이다
이 방법은 확실하나 너무 강력해서 비추,,,
2. 수동으로 <script>를 그대로 출력되도록 바꾸기
위처럼 < >를 html 형식으로 보이게끔 바꿔준다
< : <, > :>
그럼 위처럼 잘 나오긴 하지만 하나하나 수동으로 언제하냐구,,,ㅠ_ㅠ
3. npm sanitize html (html을 npm 모듈로 소독하기(?))
모듈을 사용하기 전, npm으로 관리하기 위해 $npm init을 실행시켜준다
그럼 package.json 파일이 생긴다 (상관 없음)
그리고 $npm install -S sanitize-html 을 실행시켜 모듈을 다운받는다
(이 때 -S는 현재 프로젝트에서만 해당 모듈을 사용하겠다는 뜻이고, -g는 모든 프로젝트에서 글로벌하게 사용하겠다는 뜻의 옵션이다)
sanitize-html은 이런식으로 사용하면 된다
맨 위에 변수 선언해주고 저렇게 쓰면 html 태그를 입력받아도 모두 쳐내게 된다
이 떄 일부 태그는 허용하고 싶으면 저렇게 allowedTags를 통해 허용할 태그를 쓰면 된다!
요정도로 맛보기로 마무리하기~~
'사이드 프로젝트 > 개발몰입과정[2021_SUMMER]' 카테고리의 다른 글
3주차 개념 스터디 - Typescript (0) | 2021.08.18 |
---|---|
생활코딩 node.js - API와 CreateServer (0) | 2021.08.17 |
생활코딩 node.js 개념 정리 (2) (0) | 2021.08.16 |
생활코딩 node.js 개념 정리 (1) (0) | 2021.08.12 |
2주차 개념 스터디 - BE (웹 서버, DB) (0) | 2021.08.11 |
댓글