API 인증 방법 질문 입니다..

안녕하세요, API 인증 관련해서 질문 드립니다.

우선 현재 프로젝트의 상황은 이렇습니다.

winform 으로 만들어진 프로젝트에 CefSharp을 이용하여 html 파일을 보여주게끔 되어 있습니다.
그리고 모바일 앱에서도 웹뷰에 html 파일을 보여주게 되어 있습니다.

그러다보니 url이 노출되고 url 이 노출되다보니 해당 html 에서 호출하는 API 앤드포인트, 파라미터, API KEY 값이 노출이 됩니다. <아래 사진 참고>


▲ 위 사진은 모바일 앱에서 웹뷰가 실행되게 한 후, 비행기 모드로 변경하여 네트워크가 끊어진 상태에서 다시 해당 웹뷰를 실행하면 뜨는 화면 입니다. 보다시피 url 과 파라미터 값이 모두 노출되고, 해당 url 에 있는 html 파일을 웹브라우저로 접속하여 F12 개발자모드로 api uri , 파라미터, api key 을 다 볼 수 있습니다…

이런 경우… 보안을 위해 인증 방법을 어떻게 구성해야할지 궁금합니다.

중요한 정보를 GET 파라미터로 넘기지 않고 – 헤더에 놓으시거나 POST, PUT 등의 본문으로 전송하세요.

1 Like

네 post 로 전송을 히지만, html 파일 자체가 노출이 되어버려서요 …

예를 들어 html 파일이 https://www.test.co.kr/12345.html 이 url 저장되어 있는걸 알 수가 있기 때문에
모바일 앱이나 winform 프로그램이 아닌, 그냥 웹브라우저에서 html 파일이 있는 url 로 접속해서 html 파일 안에 자바스크립트 코드를 다 볼 수 있어서 문제네여 ㅠㅠ

여러가지 방식이 있습니다. 예를 들어 특정 html을 웹으로 열려고 하면 헤더 정보를 이용해 거부할 수 있어요. 윈폼에서는 그 헤더정보를 넣어서 html을 요청하는 거죠. 물론 - HTTP 분석기를 통해 확인이 가능하겠지만 적절한 인코딩을 하면 어느정도 막을 수 있습니다.

연결 정보 URL 및 파라미터가 화면에 노출되는 것을 막고 싶을 경우 제가 사용해 보지는 않았지만 CefSharp에 관련 응답을 수신하는 이벤트가 있을 꺼에요. 그 이벤트를 받았을 때 화면을 적절하게 다르게 표시하면 될 것입니다. ILoadHandler.OnLoadError를 이용하면 되는것으로 보입니다.

1 Like

답변 감사합니다! 우선 헤더 정보로 하는 방법부터 해볼게요!!!

get , post 냐 접속 방식이 문제가 아닌거 같습니다. 이와 같은 경우에는 network가 활성화가 안된상태에서 웹페이지 요청이었기 때문에 클라이언트에서 접속 요청전 네트워크 활성 여부 및 예외처리 개념으로 접근을 하셔야 할 것 같습니다.