프론트 엔드 UI를 제공하는 백엔드 HTTP API로 구성된 애플리케이션을 개발 중이라고 가정 해 보겠습니다. UI는 클라이언트의 브라우저에서 렌더링 될 때 백엔드로 특정 호출을해야합니다 (예 :보기 용 데이터 가져 오기). 그러나 이러한 모든 호출은 Chrome의 개발자 콘솔에서 확인할 수 있습니다. 이는 내 애플리케이션의 전체 로직 및 내부 API 엔드 포인트를 노출합니다.프론트 엔드 UI에서 사용되는 백엔드 API를 보안해야합니까?
웹 응용 프로그램의 경우이 문제가 있습니까? 다른 웹 사이트 (예 : Reddit)를 둘러 보았고 실제로 API 호출이 이루어 졌는지 확인할 수 있었으며 심지어 cURL
을 통해이를 재현하여 동일한 응답을 되찾았습니다.
이 문제를 해결하기위한 첫 번째 아이디어는 모든 데이터를 암호화하여 프런트 엔드 앱에서 내부적으로 해독하는 것입니다. 그러나 개인용 키는 앱의 소스 코드에 하드 코딩되어야하므로 현대적인 브라우저에서도 확인할 수 있으므로 많은 보안을 제공하지는 않습니다. 게다가 이것은 응용 프로그램의 성능에 큰 영향을 줄 수 있습니다.
내가 생각할 수있는 가장 좋은 점은 어떻게 든 토큰 (JSON 웹 토큰, 아마도?)을 세션에 할당하는 것이 었습니다 (차례대로 사용자에게 할당 됨). 이 토큰은 API 호출을 수행하는 데 필요하며 짧은 만료 시간을 가질 수 있습니다. 그러나 토큰은 여전히 HTTP 요청에서 볼 수 있습니다.
아이디어가 있으십니까?
Fonsec - 동일한 문제에 대한 대안을 찾고 있는데 무엇을 마무리했는지 알고 싶습니까? –