728x90

보통 node 로 api 백엔드를 구성할때 env 파일을 설정 하고 db.config.js 로 db 설정 파일을 별도로 두고 관리한다. 개발서버에서는 잘 되다가 실서버로 이전 했는데 소스는 동일한데 response 에 데이터가 모두 이진법으로 buffer type 으로 넘어 올때가 있다. 숫자 데이터는 정상적으로 나오는데 영문이나 한글 등 string 형태의 데이터는 모두 이렇게 나와서 처음에는 무척 당황했다. 

 

"mem_id": { "type": "Buffer", "data": [116, 101, 115, 116, 49, 49, 49] }

 

캐릭서셋이 안맞을 경우 이런 현상이 발생하는데 이때는 캐릭터셋을 수정해 볼수 있으면 그 방법이 가장 좋지만 이미 데이터가 모두 들어가 있는 상태에서 기존 db 데이터도 문제가 없어야 하고 신규 데이터 연동에 대해서도 문제가 없어야 하는 상황이라면 typeCast 를 설정해서 데이터를 읽어 올때 utf8 로 toString 으로 변환해 주는 방법이 있다. 숫자는 정상적으로 나오지만 string 데이터가 문제 이기 때문에 조건문에는 VAR_STRING 와 BLOB 데이터를 걸러 준다. 캐릭터셋도 맞는 형식으로 한번 더 정의를 해준다. 

charset: 'utf8mb4'
const connInfo = {
	host: process.env.REACT_APP_DB_HOST,
	port: process.env.REACT_APP_DB_PORT,
	user: process.env.REACT_APP_DB_USER,
	password: process.env.REACT_APP_DB_PASSWORD,
	database: process.env.REACT_APP_DB_NAME,
	// ... 기타 연결 정보

	// typeCast 함수 추가
	typeCast: function(field, next) {
		// field 객체는 현재 처리 중인 필드의 메타데이터를 담고 있습니다.
		// 예를 들어 field.type, field.length 등을 확인할 수 있습니다.
		// next 함수는 기본 타입 변환 로직을 수행합니다.

		// 예시: BLOB 또는 VARCHAR 타입이 Buffer로 넘어올 때 문자열로 변환
		if (field.type === 'BLOB' || field.type === 'VAR_STRING') { // 또는 다른 문자열 관련 타입
			if (field.length === 0) { // 빈 문자열 처리
				return '';
			}
			// Buffer 타입인 경우 toString('utf8')로 변환
			if (field.buffer()) {
				return field.buffer().toString('utf8');
			}
		}

		// 다른 타입의 경우 기본 변환 로직 사용
		return next();
	}
};

 

728x90
728x90

sk 해킹 사태는 2025년 4월 19일 발생하며 경영진의 사과는 있었지만 처음에는 유심보호서비스를 가입하라고 안내만 해서 연일 뉴스에 보도 되곤 했는데 4월 28일 월요일 부터는 무상으로 교체 해준다고 한다. 유심 교체 외에 개인적으로 설정 할수 있는 항목이 있는지 알아 본다. 그런데 이런 사태가 일어 날때 마다 무료서비스는 일괄로 가입을 시켜 주면 안되는건지 젊은이들이야 앱에서 클릭 몇번이면 가입을 할 수 있겠지만 60, 70대 부모님 세대는 무료 서비스 가입도 쉽지가 않을거 같은데 대응 방법은 조금 아쉽니다. 

 

사건 개요

최근 SK텔레콤에는 해커의 악성 코드 공격으로 고객의 개인정보가 유출될 위험이 있었다. SK는 즉각적인 대응을 통해 유출 가능성을 인지하고 해당 악성코드를 삭제했고 해킹 의심 장비도 신속하게 격리 조치를 취했다. 하지만 고객 입장에서는 더 이상의 피해를 막기 위해 추가적인 보안 조치가 필요하다. 

 

SK텔레콤의 대응 조치

SK텔레콤은 고객의 불안을 덜기 위해 새로운 사이버 침해 사고 전담센터를 운영하고, 24시간 상담 서비스를 제공하고 있다. 노인이나 장애인과 같은 디지털 취약 사용자들을 위한 문자 안내도 진행하고 있다.

 

개인이 할 수 있는 보안 방법

개인이 설정 할 수 있는 방법에 대해 정리해 본다.

  1. 비밀번호 관리 : 비밀번호는 주기적으로 바꿔주고, 복잡한 조합으로 설정해주는것이 좋다. 예를 들어 대문자, 소문자, 숫자, 특수문자를 혼합해서 사용하는 것이 좋다.
  2. 유심 보호 서비스 가입 : 유심 보호 서비스는 타인이 내 휴대폰을 사용하지 못하도록 막아주는 서비스로 이 서비스에 가입하면 내 유심이 분실되거나 도난당했을 때 즉각적으로 차단할 수 있다. 무료 서비스니 통신사앱에서 유심보호 로 검색해서 가입해 두는것이 좋겠다. 단 이 서비스는 해외로밍은 안되니 참고 하면 좋겠다. 
  3. pass앱 > 명의도용방지 : 이 부분이 가장 중요한데 pass 앱에서 명의도용방지 설정을 해두면 전 통신사에 모두 설정을 걸수 있기 때문에 설정을 해두는것이 좋다.

 

sk 통신사가 아니더라도 위 부분은 무료 서비스니 가입해두고 모르는 메일이나 문자 링크는 클릭하지 않는 것이 좋겠다. sk에서도 대처를 잘 해야 하겠지만 개인이 할수 있는 설정도 잘 설정해두는것이 좋겠다. 

 

728x90
728x90

지역 테이블을 작업하다 보면 서울특별시 처럼 full name 으로 쓰기도 하고  서울 처럼 short name 으로 줄여서 쓰는 경우도 있어서 해당 부분에 맞게 데이터를 업데이트 해야할 일이 종종 생긴다. 

 

 

아래 쿼리문은 그런 경우 테이블 전체에서 수정해야 하는 쿼리문을 한번에 update 할 수 있다. 업데이트 구문에서도 case 구분을 잘쓰면 유용하다. 

UPDATE code_bjd_short
SET kf_name = CASE
    WHEN kf_name LIKE '서울특별시%' THEN REPLACE(kf_name, '서울특별시', '서울')
    WHEN kf_name LIKE '부산광역시%' THEN REPLACE(kf_name, '부산광역시', '부산')
    WHEN kf_name LIKE '대구광역시%' THEN REPLACE(kf_name, '대구광역시', '대구')
    WHEN kf_name LIKE '인천광역시%' THEN REPLACE(kf_name, '인천광역시', '인천')
    WHEN kf_name LIKE '광주광역시%' THEN REPLACE(kf_name, '광주광역시', '광주')
    WHEN kf_name LIKE '대전광역시%' THEN REPLACE(kf_name, '대전광역시', '대전')
    WHEN kf_name LIKE '울산광역시%' THEN REPLACE(kf_name, '울산광역시', '울산')
    WHEN kf_name LIKE '세종특별자치시%' THEN REPLACE(kf_name, '세종특별자치시', '세종')
    WHEN kf_name LIKE '경기도%' THEN REPLACE(kf_name, '경기도', '경기')
    WHEN kf_name LIKE '강원도%' THEN REPLACE(kf_name, '강원도', '강원')
    WHEN kf_name LIKE '충청북도%' THEN REPLACE(kf_name, '충청북도', '충북')
    WHEN kf_name LIKE '충청남도%' THEN REPLACE(kf_name, '충청남도', '충남')
    WHEN kf_name LIKE '전라북도%' THEN REPLACE(kf_name, '전라북도', '전북')
    WHEN kf_name LIKE '전라남도%' THEN REPLACE(kf_name, '전라남도', '전남')
    WHEN kf_name LIKE '경상북도%' THEN REPLACE(kf_name, '경상북도', '경북')
    WHEN kf_name LIKE '경상남도%' THEN REPLACE(kf_name, '경상남도', '경남')
    WHEN kf_name LIKE '제주특별자치도%' THEN REPLACE(kf_name, '제주특별자치도', '제주')
    ELSE kf_name
END;
728x90

+ Recent posts