최근 중국에서 제조된 일부 미니 PC에서 백도어가 발견됐다는 뉴스가 있었고, 기본으로 설치되어 있는 Wicgtyp SSD 역시 처음 들어보는 브랜드라 약간 불안해서 SSD를 WD NVMe SSD로 교체하고 윈도우를 재설치했습니다. 백신을 돌려봐서 문제가 없다면 그대로 써도 되지만, 저는 찝찝해서 그냥 새로 재설치를 했습니다. 그리고 드라이버를 백업해놓지 않으면 나중에 재설치하고 나서 드라이버를 다시 잡는 과정이 힘들기 때문에 꼭 드라이버를 백업하고 재설치하시길 바랍니다. 드라이버와 시디키를 백업하고 다시 복원하는 방법은 아래에서 자세히 설명하겠습니다.


1. 드라이버 백업하기

 

  드라이버를 백업하기 위해서 명령 프롬프트를 관리자 권한으로 실행합니다. 시작 버튼 옆에 있는 검색 창을 눌러서 명령 프롬프트를 실행해도 되고, Win+R키를 눌러 cmd를 입력한 후 Ctrl+Shift+Enter를 눌러 관리자 권한으로 실행해도 됩니다.

dism /online /export-driver /destination:<폴더 주소>

 

  명령 프롬프트가 실행되었다면 위와 같이 입력해 주세요. 폴더가 없으면 오류가 발생하기 때문에 미리 폴더를 만들어야 합니다. 드라이버 추출이 완료되었다면 추출한 폴더를 압축한 후에 usb 메모리에 따로 복사해 둡니다. 저의 경우에는 드라이버 용량이 약 800 MB 정도 나왔습니다.


2. 윈도우 시디키 백업하기

  윈도우 시디키를 백업하는 방법은 여러 가지가 있습니다. 저는 두 가지 방법을 썼었는데 두 방법 모두 시디키가 다르게 나와서 어떤 시디키가 맞을지 몰라 두 개 다 추출을 했습니다. 하지만 재설치를 해보니 자동으로 정품인증이 되어서 굳이 시디키를 백업할 필요는 없을 것 같지만 혹시 모르니 추출해 두시길 바랍니다.

 

  첫 번째로 명령 프롬프트를 이용해서 시디키를 추출하는 방법입니다.

wmic path SoftwareLicensingService get OA3XOriginalProductKey

 

  명령프롬프트에 위와 같이 입력하면 시디키가 나옵니다. 컴퓨터마다 표시가 안 되는 경우도 있다고 하는데, AM02에 설치된 Windows에서는 시디키가 표시됐었습니다.

 

  두 번째 방법은 레지스트리 편집기를 이용하는 방법입니다. Win+R키를 눌러서 regedit을 입력하고 확인을 누릅니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SoftwareProtectionPlatform

 

  위와 같은 경로로 들어가서 BackupProductKeyDefault 항목을 보시면 시디키를 확인할 수 있습니다. 두 방법이 시디키가 다르게 나오는 경우가 있으므로, 꼭 두 개 다 백업해 두시고 나중에 정품인증이 자동으로 안되면 추출한 시디키를 이용하여 인증을 시도해 보시길 바랍니다.


3. 윈도우 재설치 후 드라이버 복원

 

  윈도우 11 설치 usb를 만들고 윈도우를 재설치하고 나면 위와 같이 드라이버를 못 잡는 것을 볼 수 있습니다.

 

  백업한 드라이버를 재설치한 윈도우로 옮긴 후에, 명령 프롬프트를 관리자 권한으로 실행한 후에 아래와 같이 입력해 주세요.

pnputil.exe /add-driver <폴더 경로>\*.inf /subdirs /install

 

  저의 경우에는 폴더를 C:\drivers로 해서 C:\drivers\*.inf 이렇게 입력했습니다. 참고로 역슬래시(\)는 키보드 Backspace키 아래에 있는 키를 누르면 됩니다.

 

  드라이버 복원이 끝나고 재부팅을 하면 위와 같이 드라이버가 제대로 잡혀있는 것을 볼 수 있습니다.


4. 정품인증 확인

 

  설정 > 시스템 > 정품 인증 탭에 들어가 보면 따로 시디키를 입력하지 않아도 자동으로 정품인증이 되어있을 것입니다. 만약 정품인증이 안되어있다면 위에서 백업한 시디키를 입력해서 정품인증을 해주세요. 여기까지 진행했다면 윈도우 재설치는 끝입니다.


5. CMOS(BIOS 진입)

  제품 설명서에도 나와있지만, <F2>키를 누르면 CMOS에 진입할 수 있습니다. 일반적으로 <Del> 키나 <F12> 키를 눌러서 CMOS에 진입하는데, FIREBAT AM02 모델은 <F2> 키를 눌러야 CMOS에 진입할 수 있습니다.

 

  미니 PC라서 그런지 다양한 설정을 하지는 못하지만 WOL 기능이 있어 원격으로 PC를 켤 수 있습니다.

 

  저는 윈도우를 설치한 후에 우분투를 설치했는데, 윈도우 Bootloader가 먼저 인식되어서 설치한 우분투에 진입하지 못하는 문제가 있었습니다. CMOS에 들어가 보면 Boot > UEFI NVME Drive BBS Priorities 메뉴가 있는데 여기서 Boot Option 순서를 바꿔주니 우분투 Bootloader에서 우분투와 윈도우를 제대로 선택할 수 있었습니다. 

 

  1편 구입기에서 작성한 대로, 8월 Aliexpress 여름 세일 기간 중 13만 원 정도에 FIREBAT AM02 16GB/256GB 모델을 구입했습니다. 리뷰를 보니 검은색 상자가 오면 램을 교체할 수 있는 모델이고 하얀색 상자가 오면 온보드 모델인데, 8GB 모델은 하얀색 상자로 오고 16GB 모델은 검은색 상자로 온다고 해서 16GB 모델을 구입했고, 예상과 달리 물건을 받아보니 하얀색 상자가 왔습니다.

 

  같은 회사 제품 중 온보드 램이 달린 다른 모델이 급사 이슈가 있어서 반품할지 고민했었지만, 이 모델은 히트파이프 크기가 커서 발열 해소가 잘 된다는 얘기가 있었고, 램이 DDR4가 아닌 DDR5가 달려있어서 그냥 반품을 안 하고 쓰기로 했습니다.

 

  미니 PC라 본체는 성인 남성 손 크기 정도로 작았고, 전면에는 USB 3.0 포트 2개, Type C 포트 1개, Audio 포트 1개와 전원버튼이 달려있습니다.

 

  후면에는 RJ45 랜 포트 두 개와 HDMI, DP포트, USB 3.0 포트 2개가 달려있습니다. 미니 PC 대부분 랜 포트가 하나만 달려있는데, 이 모델은 두 개가 달려있어서 Link Aggregation 기능을 이용해 NAS 용도로 사용하기 좋을 것 같습니다. 후면에 Type C 포트가 하나 더 있었으면 하는 아쉬움도 있지만 포트 구성은 다른 모델들보다 충실한 편이라 만족스러웠습니다.

 

  구성품은 미니 PC 본체, 충전기, 설명서, HDMI 케이블, VESA 홀 전용 브래킷, 2.5인치 SATA 케이블입니다.

 

  36W DC 충전기가 들어가 있고, 구입할 때는 EU 규격이라고 적혀있었지만 실제로 받아보니 KR 규격이라 돼지코가 필요하지는 않았습니다.

 

  설명서에 적혀있는 스펙 시트입니다. SSD가 장착된 모델은 Windows 11 Home이 설치되어 있고, 온보드 램 모델은 DDR4가 아닌 LPDDR5가 탑재되어서 오는 것 같습니다.

 

  뒤판 모습입니다. 분해는 고무패킹 부분 나사 4개를 제거하기만 하면 돼서 간단한 편이었습니다.

 

  SSD는 Wicgtyp M.2 2280 SATA 512GB 모델이 달려있습니다.

 

  기존에 달려있던 SSD를 제거하고 6월 달에 Aliexpress에서 세일할 때 구입한 WD Black NVMe SSD SN770 500GB 모델로 교체했습니다.

 

  SSD를 제거하면 Intel AX101NGW 무선 랜카드가 보입니다. Wi-Fi 6와 Bluetooth 5.2를 지원한다고 합니다. 저가형 Realtek 모델이 들어가 있었으면 AX210로 교체할까 했는데 굳이 교체할 필요가 없을 것 같습니다.

 

  하판 뒷면에는 2.5인치 SSD나 HDD를 장착할 수 있게 되어있습니다.

 

  본체 크기만 한 히트파이프와 팬이 하나 달려있습니다. 사실 다른 미니 PC를 사용해 본 적이 없어서 다른 모델과 단순 비교는 할 수 없지만 실제로 사용해 보니 팬이 거의 돌아가지 않았고, 발열 해소가 잘 되는 편이었습니다. 하얀색 상자를 봤을 때는 걱정을 많이 했는데, 우려와 달리 온보드램이라는 것만 빼면 포트 구성이나 발열 관리면에서는 상당히 만족스러웠습니다.


 

  처음 부팅을 하니 FIREBAT 로고가 그려져 있는 배경화면이 반겨줍니다.

 

  스펙 시트에 적혀있는 그대로 N100, 램 16GB가 표시되고 있고, 제조업체 정보가 적혀있습니다.

 

  Windows 11 Home이 설치되어 있으며, 정품인증이 되어있습니다.

 

  CPU는 4 코어 4 스레드, 최대 클럭은 3.40 GHz입니다.

 

  램은 16GB이고, 온보드 램이라 폼 팩터가 Row of chips로 표시되고 있습니다. 램 클럭은 4000 MHz입니다.

 

 

  CPU-Z로 확인해 본 결과 램 제조사는 Micron이고, LPDDR5 4GB x 4개로 구성되어서 두 개의 Dual Channel로 작동하는 것 같습니다.

 

  대략적인 개봉기는 여기서 마치고 윈도우를 재설치하는 과정은 다음 글에서 이어서 작성하겠습니다.

  집에서 간단한 웹서버를 운영해보고 싶어서 미니 PC를 구입하기로 했습니다. 막상 구입하려고 하니 고려해야 할 것들이 많아서 저는 다음과 같은 사항들을 고려했습니다.

  1. CPU (N100 vs. 하이엔드 CPU)
    간단한 웹서버를 돌릴 거라 성능이 너무 좋을 필요는 없을 것 같았고, 24시간 켜둘 예정이라 소비 전력이 낮은 N100 모델을 선택했습니다.
  2. SSD (2.5인치 vs. M.2)
    나중에 NVMe SSD 모델로 업그레이드하려면 M.2 슬롯이 있는 것이 좋을 것 같아 M.2 슬롯이 달린 모델을 구입했습니다. 
  3. 램 (DDR4 vs. DDR5) and (온보드 vs. SO-DIMM)
    DDR5가 달린 모델도 있지만 간단한 작업 용도로 사용할 때 DDR4랑 차이가 크지 않을 것 같아서, 굳이 돈을 더 주고 DDR5를 가야 하나 싶어 DDR4가 달린 모델을 구입했습니다. 나중에 램을 32기가로 업그레이드할 예정이고 온보드 램이 달린 모델 중 급사 이슈가 있는 모델이 있어서, 온보드 램이 아닌 모델을 구입하고자 했습니다.

  위의 조건을 바탕으로 다음 모델들 중에서 구매하기로 했습니다.

  1. FIREBAT T8 PLUS : 쿨링이 별로인데 온보드 램이라 램 쪽에서 급사 이슈가 있는 것으로 알고 있습니다. 방열 작업을 따로 해줘야 한다고 해서 구매하기 약간 부담스러웠습니다.
  2. FIREBAT AK2 PLUS : 리뷰를 보니 램을 직접 교체할 수 있고, T8 PLUS 모델보다 쿨링이 개선된 모델인 것 같습니다. 
  3. FIREBAT AM02 : 가격이 약간 비싸지만 히트파이프가 커서 발열 해소가 뛰어나다고 하고, Type C, DP, 두 개의 RJ45 랜 포트 등 포트가 다양했습니다. 다만 검은색 상자로 포장된 제품은 램을 직접 교체할 수 있지만, 하얀색 상자는 온보드 램이라 뽑기 운이 존재하는 것이 단점이었습니다.
  4. Chatreey T8 : 평이 좋은 N100 미니 PC 중 하나입니다. 찾아보니 팬 소음이 약간 심하다고 합니다.
  5. Chatreey T9 : 리뷰를 보니 T8보다 발열이 개선된 것 같고, C타입 포트가 추가되었습니다.
  6. SOYO M2 PLUS : 가격이 가장 저렴한 대신 기본으로 2.5인치 SSD가 달려서 나오는 것 같습니다. 리뷰를 보니 M.2 슬롯이 존재하는 것 같고, DP 포트가 존재합니다.

  예산만 되면 가장 만듦새가 좋다는 Beelink 제품을 사는 게 가장 좋지만, 저는 N100이 달린 미니 PC에 많은 돈을 투자해야 하나 싶어서, 예산은 베어본일 경우 7~8만 원, SSD와 RAM 장착인 제품인 경우에는 13만 원 이하로 정하고 제품을 찾아봤습니다. FIREBAT AK2 PLUS, FIREBAT AM02, Chatreey T9, SOYO M2 PLUS 제품 중 하나를 사기로 결정했고, 마침 쿨링이 뛰어나고 포트가 다양한 FIREBAT AM02 16GB/512GB 모델을 13만 원에 구입할 수 있어서 구입을 하게 되었습니다.

 

  뽑기가 걱정되었지만 8GB 모델은 하얀색 상자로 오고, 16GB 모델은 검은색 상자로 온다는 리뷰를 보고 16GB 모델을 구입했고, 택배가 와서 상자를 뜯어보니 온보드 램이라는 하얀색 상자가 왔습니다.

 

  역시나 열어보니 온보드 램이었고 상품 설명에서는 DDR4였지만 실제로는 DDR5 램이 장착되어 있어서 반품을 안 하고 일단은 그냥 써보기로 했습니다. 자세한 개봉기는 다음 글에서 이어서 작성하겠습니다.

  5년 전쯤에 중고로 샤오미 미 맥스 2를 구입했는데, 시간이 지나고 나니 배터리 효율이 30%대까지 떨어져서 한두 시간만 핸드폰을 써도 배터리가 방전되어서 많이 안타까웠습니다. 지금은 실사용을 하고 있지 않고 픽셀롬을 올려서 사진 저장용으로 쓰고 있지만, 갤럭시 폴드를 쓰다가 바형 핸드폰이 그리워지면 가끔 꺼내서 쓰고 있어서 배터리 용량이 줄어든 것이 살짝 불편했습니다. 슬슬 배터리 직구가 막힌다는 얘기도 있었고 몇 년이 더 지나면 부품을 구하기 힘들어질 것 같아 6월에 배터리를 구입했고, 프로젝트가 다 끝나고 난 후에 시간 여유가 생겨서 배터리 교체를 진행했습니다.

 

  배터리는 6월 말에 Aliexpress에서 9,700원 정도에 구매했고, 배송은 2주 정도 걸렸습니다.

 

  배터리 생산일은 24년 5월 말로 나오는 것으로 봐서는 그래도 최신 배터리를 보내줬네요. 교체할 때 필요한 공구들을 기본으로 제공해 줘서 교체하기 수월했습니다. 교체 난이도는 어렵지 않은 편입니다.


1. 분해 과정

 

  먼저 충전 단자 옆에 있는 나사 두 개를 제거해 줍니다.

 

  그리고 액정을 분리해 줍니다. 액정이 깨지지 않게 주의해서 액정이 살짝 들리면 일자 드라이버나 얇은 물건을 이용해서 천천히 분리해 줍니다. 사실상 이 과정이 가장 어렵기 때문에 성공적으로 분리했다면 뒤의 과정은 쉽게 진행할 수 있을 것입니다.

 

  액정을 분리했다면 지문인식 커넥터를 제거해 줍니다.

 

  검은색 스티커를 제거한 후에 위에 빨간색 동그라미로 표시되어 있는 나사를 제거해 주세요. 가장 가운데 나사는 샤오미 스티커를 제거해야 합니다. 저런 스티커가 있는 경우 스티커가 제거되면 A/S를 못 받을 수도 있지만 이미 A/S 기간이 끝났으니 과감하게 제거해 줍시다.

 

  그다음에는 배터리에 붙어있는 접착 스티커 두 개를 제거해 줍니다. 큰 힘을 주면 중간에 끊길 수도 있으니 살살 당겨가면서 스티커를 제거해 줍니다. 배터리 생산 일자를 보니 2017년인데, 거의 7년 가까이 됐으니 배터리 용량이 줄어든 건 어쩔 수 없는 일이었네요.

 

 

  배터리 커넥터를 제거한 후에 키트에 첨부된 테이프를 먼저 폰에 붙인 후에 배터리를 붙이고 커넥터를 다시 연결해 줍니다. 아이폰의 경우에는 배터리 커넥터 연결을 할 때 잘 고정이 되었지만, 미 맥스 2의 경우에는 고정이 잘 안 되어서 커넥터를 꼭 누른 후에 충전이 되는 것을 확인하고 나사를 다시 조였습니다. 아이폰은 작업을 할 때 액정이 분리되어 있어서 배터리가 잘 연결되었는지 바로 확인이 불가능했지만, 미 맥스 2의 경우에는 액정이 연결되어 있으니 배터리 커넥터가 잘 연결되었는지 충전선을 꽂아서 바로 확인할 수 있습니다. 충전이 잘 되는 것을 확인했다면 분해의 역순으로 다시 조립해 주세요.


2. 다시 조립 후 테스트

  조립은 분해의 역순으로 진행하면 됩니다. 배터리 상단에 붙어있던 검은색 테이프는 접착력이 다 해서 다시 굳이 안 붙여도 될 듯합니다. 조립할 때 참고했던 유튜브 영상에서도 다시 안 붙이고 써서 없어도 큰 문제는 없을 것 같습니다.

 

  다시 충전을 해보니 대기 시간이 엄청 길어지고, 배터리 타임도 예전처럼 다시 돌아왔습니다. 개인적으로 큰 화면을 선호해서 미 맥스 같은 폰이 다시 나왔으면 좋겠지만, 미 맥스 3에서 끝난 것이 아쉽네요. 수요가 많지 않아서 어쩔 수 없는 것이겠죠. 갤럭시 폴드를 쓰고 있지만 접었다 폈다 하는 과정이 귀찮아서 오랜만에 미 맥스 2를 써보니 큰 화면이 주는 만족감이 너무 좋았습니다. 이제 다시 폰은 봉인하고, 가끔 기변증이 생기면 그때마다 꺼내서 써봐야겠습니다.


3. 배터리 폐기 방법

 

  수명이 다 된 배터리는 가까운 주민센터, 구청 또는 아파트 단지 내에 설치된 폐건전지 전용 수거함에 버리면 된다고 합니다. 저는 집에서 가까운 주민센터에 있는 폐건전지 수거함에 버리고 왔습니다.

'기타 > 수리' 카테고리의 다른 글

Logitech G304 카일 저소음 스위치 교체 후기 (납땜 X)  (0) 2024.07.07

  프로젝트 중에 팀원들이랑 간단하게 술을 마시고, 2차로 저희 집에 와서 맥주를 마시던 중 팀원 한 분이 키보드 스위치들을 보더니 자기도 키보드 세팅을 해보고 싶다고 해서 해보라고 했는데 키보드에 아주 큰 흠집을 내버렸습니다ㅠㅠ

 

  그래서 흠집을 티가 안 나게 수리할 수 있는 방법이 없을까 검색해 보던 중 아크릴 마커펜을 이용해서 해결했다는 글을 발견했습니다. (링크)

 

  글에서 본 것과 똑같은 ONE4ALL 아크릴 마커펜 229번 nature white 컬러를 쿠팡에서 배송비 포함해서 7천 원 정도에 구입해서 테스트를 해봤습니다.

 

  작은 흠집의 경우에는 티가 많이 나지 않아서 만족스러웠지만, 위와 같이 큰 흠집의 경우에는 생각보다 티가 많이 났습니다. 개인의 취향에 따라서 약간 거슬릴 수도 있을 것 같습니다. 마커펜을 칠하기 전에는 흠집이 F7, F8키에 가려져서 티가 안 났었지만 아크릴 마커펜으로 칠하고 나서는 흠집 부분이 전보다는 더 잘 보였습니다. 안쪽이나 바깥쪽 모서리 부분 흠집은 생각보다 티가 안 나서 마커펜을 칠하고 난 후 만족스러웠습니다.

 

  따라서 큰 흠집의 경우에는 키에 가려져서 잘 보이지 않는다면 굳이 마커펜을 칠할 필요는 없을 것 같고, 작은 흠집의 경우에는 마커펜으로 칠해주면 만족스럽게 흠집을 가릴 수 있을 것 같습니다. 무엇보다 흠집이 나지 않게 키캡이나 스위치를 교체할 때 항상 조심하는 것이 가장 중요합니다. 다음부터는 전기영동이 아닌 아노다이징 코팅이 된 키보드를 구입해야겠습니다ㅠㅠ

1. 키캡 풀러 - 우큐 3U 키캡 풀러 + ASF-110 테프론 테이프

 

  안녕하세요. 키보드 쪽에 입문한 지 오래되지는 않았지만, 어떤 장비가 좋은 지 검색도 많이 해봤고 그중 직접 써봤던 장비들 중에서 쓸만했던 장비들을 추천해드리려 합니다.

 

  먼저 키보드를 구입했을 때나 키캡을 구입하면 위와 같은 모양의 키캡 풀러를 기본으로 제공해 줄 것입니다. 키캡을 한 번만 교체하면 위와 같은 풀러도 쓸 만 하나, 키캡을 여러 번 교체하는 경우 매 번 키캡에 풀러를 걸어서 제거하는 일이 무척 귀찮을 것입니다.

 

  그래서 많이 쓰는 풀러가 우큐 키캡 풀러입니다. 3U로 표시된 것을 사면 한 번에 세 개의 키캡을 제거할 수 있어서 편리합니다. 국내에서 구입하면 만원 정도 줘야 하지만, Aliexpress의 코인샵에서 구입을 하면 훨씬 저렴한 가격에 구입할 수 있습니다.

 

  저는 6월에 Aliexpress 코인샵에서 약 4천 원 정도에 구입을 했고, 24년 8월 말인 지금은 333 코인을 쓰면 3.33달러 정도에 구입하실 수 있습니다. 코인샵에서 WS로 검색을 하시면 나올 거예요.

 

  그냥 키캡 풀러만 쓰면 끝부분이 날카로워서 키보드에 긁힘이 생길 수 있습니다. 그래서 사람들이 많이 쓰는 ASF-110FR과 같은 테프론 테이프를 이용해서 풀러에 감아준 후에 사용합니다.

 

  그냥 막무가내로 스위치를 제거하면 이렇게 키보드가 긁히기도 합니다. 프로젝트 중에 팀원들과 술을 마신 후에 저희 집에 와서 간단하게 맥주를 먹으면서 팀원이 키보드 세팅해보고 싶다고 키캡을 제거하다가 위와 같이 흠집이 생겼습니다ㅠㅠ

 

  이렇게 끝부분에 테프론 테이프를 감아주면 그나마 긁힘이 생기는 것을 방지할 수 있습니다. 물론 이렇게 한다고 해도 긁힘이 생길 수 있으니 키캡을 제거할 때는 항상 조심해야 합니다.


2. 스위치 풀러 - TX 알루 스위치 풀러, 게이트론 스위치 풀러 V2

  소위 빨래집게라고 불리는 TX 알루 스위치 풀러와 게이트론 스위치 풀러를 많이 사용합니다.

TX 알루 스위치 풀러

 

  TX 알루 스위치 풀러 가격은 3만 원 정도하고 약간 비싼 편입니다.

게이트론 스위치 풀러 V2

 

  게이트론 스위치 풀러 역시 3만 원 정도 합니다. 게이트론 스위치 풀러는 제가 써보지는 않았지만 많은 사용자들에게 평이 좋고, TX 알루 스위치 풀러는 제가 지금 사용 중인데 정말 좋습니다. 솔직히 키캡 풀러는 기본 풀러를 써도 시간이 오래 걸릴 뿐이지 충분히 쓸 만 하지만, 스위치 풀러는 비싼 값을 충분히 해줍니다. 저렴한 스위치 풀러와 위 풀러들 간의 차이가 굉장히 크기 때문에, 스위치를 여러 번 교체하실 예정이시라면 무조건 둘 중에 하나는 구입해서 쓰시기를 추천드립니다. 

  pg 라이브러리를 사용해서 express에서 PostgreSQL을 사용하기 위해 공식 문서를 읽어보던 중, 매개변수화된 쿼리(Parameterized query) 항목을 보고 흥미가 생겼습니다. 우선 일반적인 쿼리문과는 다른 형태를 하고 있었고, SQL Injection 공격을 방지한다고 되어 있어서 일반적인 쿼리문보다 좋아 보였습니다. 하지만 공식 문서만 보고는 SQL Injection 공격이 무엇인지, 그리고 매개변수화된 쿼리가 어떻게 SQL Injection 공격에 더 안전한지 알 수가 없어서 관련 정보들을 찾아봤습니다.


1. SQL Injection 이란?

  SQL Injection은 가장 흔한 웹 해킹 기법 중 하나로써 웹 페이지 입력을 통해 SQL 문에 악성 코드를 삽입해서 데이터 베이스를 파괴할 수 있는 기법입니다. SQL Injection은 "1=1"이 항상 true 값을 반환한다는 것을 기반으로 합니다.

SELECT * FROM Users WHERE UserId = 105 OR 1=1;

 

  "1=1"이 항상 true이기 때문에, UserId = 105와 상관없이 항상 true가 되어서 테이블의 모든 행을 반환합니다.

 

  직접 SQL 쿼리를 입력해 보면 이해하기 쉬울 것입니다. 만약 테이블에 user 이름과 비밀번호가 포함되어 있다면 해커는 105 OR 1=1을 삽입하여 데이터베이스의 모든 사용자 이름과 비밀번호에 액세스 할 수 있습니다.


2. 매개변수화된 쿼리(Parameterized query)

  매개변수화된 쿼리는 SQL Injection을 방지하는 효과적인 방법 중 하나입니다. 그 이유는 쿼리 구조와 데이터를 분리하기 때문입니다. 매개변수화된 쿼리의 구조는 다음과 같습니다.

const { pool } = require('../db');

const { UserId1, UserId2 } = req.query;

// 매개변수화된 쿼리 (Parameterized query)
const query = '
SELECT * FROM Users 
WHERE UserId = $1 OR UserId = $2
';
const values = [UserId1, UserId2];

const res = await pool.query(query, values);
console.log(res.rows);

 

  위 코드와 같이 UserId 값은 쿼리에서 직접 입력되는 것이 아니라, 별도의 값으로 전달이 됩니다. 따라서, 데이터는 쿼리의 일부로 해석되지 않습니다. 따라서, 일반적인 쿼리문을 쓰는 것보다 매개변수화된 쿼리를 사용하면 데이터베이스의 안전성을 높이고, SQL Injection 공격을 효과적으로 방어할 수 있습니다.


참고문헌

1. Parameterized Query - node-postgres 공식 문서 (링크)

2. SQL Injection - W3 Schools (링크)

  PostgreSQL을 설치할 때 비밀번호를 설정해주는데, 이 비밀번호를 변경하는 방법을 알아보겠습니다.


1. 서비스에서 postgresql-x64-16 시작하기

 

  검색창을 열어서 서비스를 입력하거나 윈도우 키+R을 눌러서 "services.msc"를 입력해서 서비스 메뉴에 들어갑니다.

 

  postgresql-x64-16 서비스가 시작이 되어있지 않다면 마우스 우클릭을 해서 시작을 눌러줍니다.


2. 환경 변수 등록하기

  PowerShell이나 터미널에서 아래와 같이 입력을 해줍니다.

psql -U postgres

 

  만약 psql 명령어를 찾지 못한다는 문구가 뜬다면 환경변수를 등록해줘야 합니다. 환경 변수 등록을 위해서 PostgreSQL이 설치된 폴더를 찾아야 합니다. (psql 명령어가 잘 작동한다면 이 단계는 패스하시고 다음 단계를 진행하시면 됩니다.)

C:\Program Files\PostgreSQL\<Version>\bin

# Example
# C:\Program Files\PostgreSQL\16\bin

 

  저의 경우에는 16 version이라, 디렉토리 경로는 "C:\Program Files\PostgreSQL\16\bin"이었습니다.

 

  경로를 찾았으면 윈도우 검색 창에서 시스템 환경 변수 편집을 검색하거나, 윈도우키 + R을 눌러서 "sysdm.cpl ,3"을 입력해서 시스템 환경 변수 편집 메뉴로 진입해 줍니다. 시스템 속성 메뉴가 뜨면 환경 변수(N)라고 되어 있는 메뉴를 클릭합니다.

 

  환경 변수 창이 뜨면 시스템 변수(S)라고 써져 있는 곳에서 Path 부분을 찾아서 더블 클릭을 합니다.

 

  새로 만들기(N)를 눌러서 아까 찾은 PostgreSQL 디렉토리 경로를 입력해 주고 확인을 눌러주세요. 그리고 재부팅을 해야 추가된 환경 변수가 적용이 됩니다.


3. PowerShell이나 터미널에서 비밀번호 변경

  환경 변수 등록을 마치고 재부팅을 했다면, 이제 PowerShell이나 터미널에서 psql 명령어가 잘 작동할 것입니다.

psql -U postgres

 

  터미널에 접속해서 위와 같이 입력하고 프로그램을 설치할 때 입력했던 비밀번호를 입력하면, PostgreSQL에 접속하실 수 있습니다.

ALTER USER postgres WITH PASSWORD "변경할 비밀번호";

# Example
# ALTER USER postgres WITH PASSWORD "1234";

 

  접속하신 후에, 위와 같이 명령어를 입력해 주면 비밀번호 변경이 완료가 됩니다.

 

  ALTER ROLE 문구가 뜨면 비밀번호 변경이 완료된 것입니다.

'코딩 공부 > SQL' 카테고리의 다른 글

[PostgreSQL] 매개변수화된 쿼리 (Parameterized query)  (0) 2024.07.20

+ Recent posts