전체 글 607

[정보처리기사] SW개발 보안 구현

보안 설계 정리 기무가 기밀성 무결성 가용성 정보 보안의 AAA Authentication (인증) Authorization (인가, 권한부여) Accounting (계정관리) 정보보안의 거버넌스 기밀성, 무결성, 가용성이 잘 유지될 수 있도록 거버넌스 종류(크기 순) 기업 거버넌스 IT 거버넌스 정보보안 거버넌스 정보보안 관리적 (보안 정책) ISMS - 전체적인 보안 PIMS - 개인정보 보안 ISMS-P - 둘다 합친 것 ITSec - 유럽 TCSec - 미국 CC - 국제 표준 기술적 (암호화, 시큐어 코딩) OWASP OWASP Top 10 시큐어 코딩 OWASP Top 10 기준 대로 우리나라 KISA에서 개발해라는 것 시큐어 코딩 가이드 종류 (입보시 에코캡아 입력 데이터 검증 및 표현 보안..

정보처리기사 2023.06.29

NodeJS+MongoDB Part3 - 채팅

/chat 으로 이동했을 때 페이지를 보여줄 수 있도록 하기 app.get("/chat", isLogin, (req, res) => { res.render("chat.ejs"); }); 이후 chat.ejs 에서 로그인된 유저가 참여한 채팅 목록을 보여줄 수 있도록 data를 보내주기 app.get("/chat", isLogin, (req, res) => { console.log("req.user._id: ", req.user._id); db.collection("chatroom") .find({ member: ObjectID(req.user._id) }) .toArray() .then((data) => { console.log(data); res.render("chat.ejs", { data: data..

NodeJS+MongoDB 2023.06.29

[프로그래머스] 게임 맵 최단거리

from collections import deque # bfs와 delta 를 사용해서 풀기 # 나의 위치는 1,1 라고 하지만 배열상 (0,0) # 상대방은 해당 배열의 가장 마지막인 (n-1, m-1) def solution(maps): que, mx_X_ln, mx_Y_ln = deque([[0, 0, 1]]), len(maps[0])-1, len(maps)-1 # y,x,cnt visit = [[0]*(mx_X_ln+1) for _ in range(mx_Y_ln+1)] while que: y, x, cnt = que.popleft() if visit[y][x]: continue visit[y][x] = 1 if x == mx_X_ln and y == mx_Y_ln: return cnt for s..

알고리즘 2023.06.29

[정보처리기사] SW 개발 보안 설계

정보보안 정보의 훼손, 변조, 유출 등을 방지하기 위한 관리적(정책, ISMS, PIMS), 기술적(암호화, 접근통제, 데이터 백업) 방법을 의미한다. 정보보안의 3요소 (기무가) 기밀성 - 인가된 사용자만 접근 가능하며, 외부 유출 방지 무결성 - 인가된 사용자가 인가된 방법으로만 변경할 수 있다. (접근 통제) 가용성 - 인가된 사용자면 언제든지 사용할 수 있어야 하는 것. 인증(Authentication) - 인증된 유저인지 확인 정보보안의 AAA (관리자 시스템 생각하기) 인증(Authentication) - 망, 시스템 접근을 허용하기 전에 사용자의 신원을 검증 인가, 권한부여(Authorization) - 검증된 사용자에게 어떤 수준의 권한과 서비스를 허용 계정관리(Accounting) - 사..

정보처리기사 2023.06.28

NodeJS+MongoDB Part3 - 이미지 업로드 & 이미지 서버 만들기

이미지 업로드 & 이미지 서버 만들기 upload.ejs를 만들어서 form 태그안에 input 타입으로 file을 선택해서 파일 전달할 수 있도록 하기 input 속성의 enctype은 아래의 주석을 보고 이해하기. 업로드 페이지 server.js 에도 만들 upload로 방문했을때 upload.ejs가 보일 수 있도록 해주기. app.get("/upload", (req, res) => { res.render("upload.ejs"); }); 여기서 잠시 이제 업로드한 파일을 어디서 보관하는지에 대해 생각해본다면 db에 그냥 저장하는게 좋지 않을까? 라고 생각하지만 보통 저렴하게 하드디스크에 저장한다고 한다, 아니면 클라우드 서비스의 하드디스크를 빌려서 사용하던지! 그래서 우선 프로젝트 내에 폴더를 만..

NodeJS+MongoDB 2023.06.28

[프로그래머스] 타겟 넘버 | 깊이/너비 우선 탐색(DFS/BFS)

# dfs 방식으로 푼 코드 # bfs로 풀어보니 시간이 더 오래 걸렸다. def solution(numbers, target): answer = 0 stack = [[0,0]] # 시작 stack while stack: idx, hap = stack.pop() if idx < len(numbers): stack.append([idx+1, hap+numbers[idx]]) stack.append([idx+1, hap-numbers[idx]]) else: if hap == target: answer += 1 return answer # bfs 방식으로 푼 코드 def solution(numbers, target): answer = 0 que = deque([[0,0]]) # 시작 queue while qu..

알고리즘 2023.06.28

[백준] DFS와 BFS (1260)

# dfs는 stack, bfs는 queue 의 특징을 이용해서 푼 코드 # visit를 이용해서 방문 체크로 방문하지 않은 node의 경우에만 추가하는 형식으로 시간 줄임. import sys from collections import deque n, m, v = map(int,sys.stdin.readline().split()) _dict = {i:[] for i in range(n+1)} for i in range(m): s,e = map(int,sys.stdin.readline().split()) _dict[s].append(e) _dict[e].append(s) stack, s_dfs, que, q_bfs = [v], [], deque([v]), [] # dfs = stack, s_dfs, bf..

알고리즘 2023.06.28