신입 오늘 우회 코드 짜는거 뜬금없이 어려웠네요
요구 사항
사내 PHP API 로 데이터 찍어보는 용도인데 중간 과정에서 계속 세션 검증이 되니,
이걸 섣불리 조작하거나 빼기에는 부작용 예상이 안 되서 건들면 안 되고
글로벌 변수를 만들어서 IP 체크만 하는거 추가해서 세션 검증 과정 우회해라
요구 사항만 보면 어려울거 같지 않은데
그런데 저는 컴파일러 언어에서 전역 변수 조심해야 되는건 말할것도 없고
인터프리터 언어라고는 자바스크립트/타입스크립트 밖에 모르고
여기서도 전역 변수의 위험성을 드문 드문 들어가지고 이거 맞나?
싶어서 일단 전역 변수로 하는게 맞는지 검색을 엄청 해봤죠
그런데 아예 모르는 언어다 보니까 읽는게 더뎌서
include once 로 함수 선언 안하고 그냥 적어놓으면 바로 실행 갈겨지는줄도 몰라서 헤매고
(보통은 자바/타입스크립트 같은거면 임포트 해올 때 명시, 호출하는 것도 명시하쥬)
글로벌 변수 써먹는걸 검색을 잘 못했고 (내장 글로벌 변수만 알아봄)
IP 체크 부분 좀 딥하게 공부하다가 내린 결론이
(IP 를 제대로 못 얻어올 가능성, 사용자가 프록시 쓸 가능성, 보안 취약점
사내 시스템 쿠버네티스 가상화 로드밸런싱 될텐데 이거 IP 제대로 찍히나 하는 의문)
IP 는 어렵게 생각 안하고 그냥 단순 체킹하고,
그냥 얘 URL 로 들어오는 요청에만 반응하는 쿠키 확인해서 없으면 발급해주고
해당 URL 요청만 쿠키 검증하기로 했는데
상사님이 왜 요구한대로 안하고 왤케 어렵게 돌아가냐고 하시더라고요
알고 보니 전역 변수 써도 그냥 스크립트 읽는거 끝나면 그대로 생명 주기(?) 끝이라서
네임스페이스 겹치거나 하는거 아니면 지장이 없더라고요
global 선언해서 읽어오는 것도 좀 신박했어요
여튼 그렇게 해서 코드를 짰더니 boolean 값 이해 잘못해서 거꾸로 쓰니 1차 에러나서 허둥지둥하고
완전히 동작하는 코드로 다시 드렸더니 결국은 가상화, 배포 시스템에서 다른 IP 줘서
원래 요구 사항은 애초에 제가 해결할 수 있는 영역 밖이더라고요
내일 배포 전담하시는 선배님이랑 이야기 나눠서 해결 봐야겠습니다