궁금한게 많은 열아홉
article thumbnail
테스트 코드 작성에 대한 고찰
기타 2023. 7. 23. 21:36

개요요즘 프로젝트를 하면서, 주변사람들에게 이런 말을 듣고는 했다. "그런데, 테스트 코드는 작성 안 하세요?" 혹은 "TDD는 해?" 와 같은 말들. 나는 그동안 프로젝트를 완성하는 것에 초점을 맞추다 보니, 테스트 코드를 크게 염두에 두진 않았다. 그래서 지금 부터라도 소프트웨어 테스트에 대해 알아보고 추후에 프로젝트를 진행할 때 작성해보려고 한다. 소프트웨어 테스트란?소프트웨어 테스트(software testing)는 주요 이해관계자들에게 시험 대상 제품 또는 서비스의 품질에 관한 정보를 제공하는 조사 과정이다. - 위키백과 즉, 소프트웨어가 의도한대로 동작한대로 동작하는지 테스트하는 행위를 일컫는다. 소프트웨어 테스트의 장점옛날에는 사람들이 직접 테스트를 하고 또 테스트를 하는 팀이 별도로 있었지..

article thumbnail
[Next.js] react-qr-reader를 활용해 입소 인증 기능 구현하기
React&Next.js 2023. 7. 16. 15:21

개요지난 포스팅에서 QR코드를 생성하고, 이를 이미지화 하는 작업까지 마쳤다. 그래서 오늘은 이를 활용해 입소 인증기능을 구현해볼 예정이다. 필자는 현재 프로젝트에서 Next.js와 Typescript를 활용해서 진행하고 있다.기능사항 쪼개기우선 내가 구현하고자 하는 기능을 세부사항으로 쪼갰다. 그랬더니, 아래와 같이 4가지 사항들로 정리할 수 있었다. react-qr-reader라이브러리 설치하기qr을 스캔하는 컴포넌트 생성하고, 설정해주기카메라를 통해 QR코드 인식하기결과를 확인하고 통과시키기그럼 이제 시작해보도록하자.react-qr-reader 설치하기npm i react-qr-readeryarn add react-qr-reader npm 혹은 yarn을 활용해 react-qr-reader 라이브러..

article thumbnail
[Python] Base64로 문자열 인코딩해서 QR코드 만들기
카테고리 없음 2023. 6. 30. 11:41

필요성 바로 어제 Node.js로 node-cron을 활용해 주기적으로 문자열을 생성해주었다.(관련 글은 여기 있다.) 그 문자열을 Base64로 인코딩하여 QR이미지를 만들어 친구들이 조작 없이 실시간으로 인증할 수 있도록 만들어야 한다. 도입하기 Python3와 pip 설치는 사전에 준비되어있다는 가정하에 진행된다 폴더 및 파일 생성 우선 폴더 하나를 만들고, 안에 main.py를 생성한다 코드 작성 필요한 모듈을 import한다 # api 요청 import requests # base64 인코딩 import base64 # qr 이미지 생성 import qrcode # 대기 시간 설정 import time 서버가 켜져있는 동안 3초를 주기로 QR이미지를 생성해준다 # 참일 동안 while True:..

article thumbnail
[Node.js] node-cron을 사용해서 일정 시간 마다 특정 작업해주기
JavaScript 2023. 6. 29. 08:39

필요성 현재 구현하고 있는 기숙사 입소 시스템은 입소 인증 방법에 대한 고민이 많았다. 우리 학교에서 입소를 인증한다는 것은, 다른 대학교에서 출석 인증을 하는 것과 다름 없기 때문에 그만큼 상당히 중요하다. 우회나 조작이 불가능해야 하고, 인증 요청자가 자기 자신이라는 것을 증명해야 한다. 그렇다 보니 인증은 보안에 매우 매우 중요하다. 그래서 여러 방법을 시도해보면서 어떤 방법을 쓰는 것이 적합할지에 대해 생각해보던 중 선생님을 통해 cron에 대해 알게되었다. 어떻게 쓸것인가 요즘 대학생들이 출석하는 모습을 본적 있는데, 이렇게 QR코드를 찍어서 앱에서 인증하도록 한다. 교수님께서 QR을 띄우면 학생들이 출석인증을 하는 방식인데, 우리가 그대로 적용하기엔 몇 가지 문제점이 있다. 우리는 사람마다 오..

[알고리즘] 알고리즘 개념 정리
CS 2023. 6. 16. 23:47

그리디현재 상황에서 지금 당장 좋은 것만 고르는 방법,순간 가장 좋아보이는 것을 선택하며, 현재 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. 구현머릿속에 있는 알고리즘을 소스코드로 구현하는 과정.모든 경우의 수를 주저 없이 다 계산 하거나, 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행하는 등의 유형있다. DFS깊이 우선 탐색으로 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘. 스택을 사용한다.const graph = { A: ["B", "C"], B: ["A", "D"], C: ["A", "E"], D: ["B", "F"], E: ["C","G"], F: ["D","H","I"], G: ["E","J","K"], H: ["F","L..

[정보보안] bof
정보보안 2023. 6. 15. 14:51

Buffer Overflow 데이터를 버퍼에 저장할 때 개발자가 의도한 크기를 넘어서 값을 넣는 방식이다. 그럼 버퍼 데이터가 초과하고, 초과된 데이터는 인접 메모리에 영향을 미친다. 이때 제어 관련 구문도 포함될 수 있다. 프로그램의 실행 흐름을 바꿔 특정 코드가 실행되게 한다. 해결 방안 입력 값의 타입 확인 입력 값의 길이 확인 용어 정리 Stack Frame 모든 함수가 호출될 때 할당되는 자신만의 스택 공간이다. SFP: Stack Frame Pointer 이전 함수의 Stack Frame Pointer를 저장하는 영역이다. Stack Pointer의 기준점이 된다. SP: Stack Pointer SFP를 기준점으로 해서, 상대 주소 offset 을 저장해 메모리에 접근한다. RET: Retu..

[정보보안]시스템해킹
정보보안 2023. 6. 15. 14:47

시스템 해킹 관리자 권한을 손 안에 넣는것이 목적이다. root 권한을 얻게 되면 서버를 쥐락펴락 할 수 있기 때문에, 시스템 해킹은 root 권한을 어떻게든 가져보겠다고 시도하는 것을 말한다. (궁극적인 목적임) 리모트 해킹 Remote Hacking 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 대, 아이디를 얻고자 시도하는 것을 말한다. 로컬 해킹 Local Hacking 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때, root 권한을 얻기 위해 시도하는 것을 말한다. 리모트 해킹을 성공해서 한 아이디를 손에 넣더라도, 별로 할 수 있는 것이 없기 때문에 바로 로컬 해킹을 하게 된다. 로컬 해킹의 원리 SetUID이다.일시적으로 자신의 ID를 변경하는 것 해킹 실습 로컬 해킹의 프로세스는 ..

article thumbnail
[정보보안] sql Injection
정보보안 2023. 6. 15. 14:37

SQL Injection 말그대로 sql을 삽입하는 취약점으로, 클라이언트 측에서 SQL 쿼리에 신뢰할 수 없는 데이터가 입력되었을 때, 데이터가 쿼리 로직의 일부로 해석되어 DB에서 실행될 때 발생한다. 주로 사용자가 입력한 데이터를 제대로 필터링, 이스케이핑 하지 못했을 경우에 발생한다. 거의 모든 데이터베이스 엔진은 유저 입력이 의도치 않은 동작을 하는 것을 방지하기 위해 escape 함수와 prepared statement를 제공한다. 문제를 확인해보자. 로그인 서비스에서 SQL Injection 취약점을 통해 FLAG를 획득하라고 한다. 한 번 접속해보자. 대문짝만하지 않게 Login 링크가 걸려있다. 클릭해보자. 우리는 여기에서 admin/admin을 테스트해보지 않을 수 있다. 가슴이 시키기..

article thumbnail
[정보보안] CSRF 공격하기
정보보안 2023. 6. 15. 14:25

CSRF 공격기법 크로스 사이트 요청 위조 공격 (CSRF: cross site request forgery attack) ▪XSS 와 유사하게 활용 가능 ▪XSS 와 차이 -> XSS는 특정 사이트를 신뢰하는 정책을 이용한 코드 삽입하여 사용자가 script 실행 -> CSRF는 특정 인증된 사용자의 요청을 신뢰하는 정책을 이용해 script 요청을 서버에서 실행시킴. 공격 경로 예시 공격자가 시스템 관리자에게 스크립트가 포함된 메일 전송 ▪인증된 세션을 가지고 있는 관리자가 메일을 읽음. ▪브라우저에서 인증된 세션과 함께 악성 스크립트가 실행. ▪관리자 세션 탈취 성공. 실습 입력받은 URL을 확인하는 봇이 구현된 서비스에서 CSRF 취약점을 이용한 FLAG 획득 문제이다. 문제는 여기있다. csrf..

article thumbnail
[React] Custom hook으로 포인트 충전과 차감 관리하기
React&Next.js 2023. 6. 13. 07:25

개요현재 개발중인 서비스 ARIPAY는 교내 매점 상품권을 온라인으로 관리할 수 있는 플랫폼이다.지난번에 현재 잔액 조회 및 사용자 조회에 대한 개발을 마무리했고, 이제 포인트 충전 및 차감 기능을 구현해보려고 한다. 포인트 차감 & 충전흐름 쪼개기우선 포인트 차감은 사용자 및 관리자가, 포인트 충전은 관리자가 할 수 있어야한다. 사용자 학생증 바코드 찍기해당 하는 학생 정보를 포함해 충전 화면 이동금액 입력충전 버튼 클릭충전 완료그리고 차감은 아래와 같이 정리할 수 있었다.사용자 학생증 바코드 찍기해당 하는 학생 정보를 포함해 충전 화면 이동금액 입력결제 버튼 클릭충전 완료여기에 더해, 우리가 알아야할 데이터 정보를 정리할 수 있다.학생증 바코드포인트 내역충전/결제 여부금액고려해야할 부분여러 곳에서 상..