프로그래밍/Node(2)
-
[Typescript] CryptoJS 사용기
개요API 사용을 위해 요청 헤더 조건으로 crypto js를 통한 암호화가 필요했다.기존의 javascript 코드로 작성된 레퍼런스는 많았으나 '@types/crypto-js'를 사용하게 되면 CommonJS 모듈 방식을 사용하지 않기 때문에 라이브러리 분석을 통해 기존 코드를 타입스크립트에 호환되게끔 치환한다.(GPT를 사용하면 편하게 변환해줄 수 있긴 하겠다만 사용을 지양하는 편이라..크흠) 과정기본적으로 알아야 할 지식은 Crypto JS가 어떤 과정을 통해 암호화 하는가이다.1. SHA256, 512, HMAC 등 여러가지 암호화 알고리즘을 통해 해쉬값을 생성함2. 생성해낸 해쉬값을 32비트의 고정 길이 단어 배열을 생성해낸다.3. 생성된 단어배열을 인코딩(UTF-8, UTF-16, HEX)을..
2024.12.01 -
[ Node ] Mysql 라이브러리에서 Sql Injection 예방을 위한 파라미터 바인딩
개요사내 데이터베이스는 MySQL을 사용하고 있고 Node를 사용하고 있기 때문에 node-mysql 라이브러리를 사용하고 있다.그러던 중 문득 우리 서버는 SQL Injection으로부터 안전한지 궁금해져 글을 쓰게 됐다. SQL Injection이란?SQL injection은 말 그대로 쿼리문에 sql 명령어를 삽입하면 명령어가 그대로 실행되는 취약점을 노린 보안 공격이다.예를 들어 다음과 같은 것이 가능하다. const name = req.body.name;const sql = "select * from user where name=" + namedb.query(sql, function(response,err){ ...}) 이 때 클라이언트에서 다음과 같이 요청(request) 페이로드를 전달하..
2024.07.17