보안 업무를 하다보면,
그리고 이것저것 하다보면 프록시를 켜 둔 채로 컴퓨터나 모바일 기기를 쓰는 경우가 많아요.
그 과정에서 흥미로운 것들을 보게되는데,
화면에 보이는 것보다 API 응답에는 훨씬 많은 정보들이 보입니다.
몇가지 취약한 공통 패턴들을 보면,
첫째, 많은 경우 로그인 후 본인의 정보가 select * all 한 결과물처럼 내려옵니다.
물론 여러번 API 호출하지 않고 캐시해두고 쓰고싶은 것은 알겠지만,
가끔 그 중에는 정말 노출될 필요가 없는 것들이 많고, 꼭 필요할때만 불러야하는 것들도 있어요.
최근에는 꽤 큰 모 회사 서비스를 쓰는데 CI값이 로그인시에 내려오는 걸 본 적도 있었답니다.
다음으로는,
특히 소셜앱에서 화면에 나와 상대방의 거리가 표시되는 경우,
유저의 마지막 접속지를 좌표값으로 저장한 후 계산해서 거리를 표시해주는 로직을 많이 쓰는데요.
문제는, 이 좌표값 계산을 위한 좌표가 백엔드에서 처리 후 거리값만 프론트로 넘겨주지 않고 프론트에 화면에만 안보이는 GPS 좌표값이 있는 경우가 정말 많습니다.
이걸 구글 지도로 확인하면 상대방의 실제 위치가 노출되는 프라이버시 문제가 생길 수 있어서 주의가 필요해요.
마지막으로 출생년도를 표시하는 경우에, 가입시 입력받은 생년월일을 API응답값으로 받아서 화면에는 출생년도만 보여주는 경우가 많아요. 하지만 실제로는 응답값을 보면 생년월일을 정확하게 알 수 있어요.
예시화면을 넣고싶었지만,
화면을 넣으면 앱이 특정될 수 있어서 넣지 않은 점 참고 부탁드립니다.
몇가지 예시들이 더 있지만,
가장 중요하게 이야기하고싶은 부분은,
화면에 보이지않는다고 유저가 모를거라고 생각하고 구현하면 안된다는 점이에요.
이 글을 읽는 분들이 개발한 앱들이 조금 더 안전해지는데 도움이 되었으면 좋겠습니다.
안녕하세요!
앱 공부중인데 미처 생각 못한 내용들이 있어 좋은 공부가 되었습니다!
GPS 좌표값 노출 부분 내용이 살짝 이해가 부족해서 그런데 혹시 구글맵을 사용하는 앱일경우 그렇단 것인가요? 구글 지도로 확인할때 노출된다는 상황이 어떤 상황인지 파악이 안되서 질문드립니다!
저는 1인 개발이라 파이어베이스와 gps 사용하여 위와 비슷한 앱을 만드려고 합니다