인터넷의 모든 API는 공개 API이므로 약점을 발견 할 수있는 충분한 시간을두고 학대 당할 수 있습니다.
솔루션에 다음 아이디어 중 일부가 포함될 수 있다고 가정합니다. 슬프게도, 다음의 아이디어는 각각 약점을 가지고 있지만, 그것들의 조합은 당신의 요구 사항을 적절히 충족시킬 수 있습니다. 절대적으로 솔루션을 보장 할 수는 없지만 매우 가까워 질 수 있습니다.
아이디어 : 트랙 동작. API를 호출하는지도의 "정상적인"동작을 쉽게 인식 할 수 있습니까? 예를 들어, 분당 한 번만 또는 초당 여러 번 API를 호출합니까? 정상적인지도 생성 빈도가 낮 으면지도 사용자가 아닌 개발자가 높은 빈도로 간주 할 수 있습니다.
아이디어 : 사용자를 추적하십시오. 웹 사이트의지도 사용자가 로그인해야합니까? 그렇다면 각 사용자의 API 호출을 추적하고 정상적인지도 사용에 비해 너무 높은 숫자를 찾아 볼 수 있습니다.
아이디어 : 각지도 표시를 추적하십시오. 브라우저 창에서지도의 각 표시에는 생성 된 HTML/웹 페이지의 JavaScript에 웹 서버가 포함하는 고유 한 ID가 할당됩니다. 표시된 맵에서 각 API 요청과 함께 ID가 다시 전송됩니다. API 서버에서 ID가 현재 표시된 맵의 ID 목록에 없으면 API 요청이 거부됩니다. 이 개념은 "nonce"과 유사하므로 map-nonce이라고 부릅니다. API를 직접 호출하는 개발자는 유효한 맵 - 넌스를 가지지 않으므로지도로 가장 할 수 없습니다. 그리고 다른 브라우저 나 사용자의 유효한 맵스 (nonce)가 있더라도 특정 세션에서는 유효하지 않습니다. 이것을 구현한다면, 활성화 된 map-nonce를 추적해야 할 것입니다. 잠시 후 맵 넌스가 만료됩니다. 사용자가 로그 아웃하면 해당 세션에 대한 map-nonce가 만료됩니다. 지도가 API 요청을하고지도 nonce로 인해 요청이 거부 된 경우지도가 다시 표시되어야하며 이는 서버에서 새지도 - 논스를 가져옵니다.
아이디어 : 난독 화. 지도와 API를 다른 도메인에 배치하십시오. 지도의 API를 개발자의 API와 다르게 설정하십시오 (JSON 대 쿼리 문자열). 지도의 API를 공개적으로 문서화하지 마십시오. 지도의 필수 데이터 만지도의 API에 포함하십시오. 악의적 인 개발자를 기습적으로지도 API를 변경하십시오. 지도 사용자는 말도 안되는 시각적 데이터를 필터링하는 두뇌를 가지고 있으므로지도 API에 가짜 데이터를 포함시킬 수 있습니다.주의 깊게 수행하면지도 사용자는 별 문제가되지 않습니다.
사용자 및지도 디스플레이를 식별하고 API 동작을 고려하면 누군가가 API를 악용하는지 여부를 합리적으로 판단 할 수 있어야합니다. 물론 누군가가이를 해킹 할 방법을 찾을 수 있기 때문에 통계를 유지하고 규칙적인 간격으로 대뇌 및 안구를 관장하는 것을 잊지 마십시오.
당신의 대답 주셔서 대단히 감사합니다. 추가 질문을 할 수있는 경우 : 이와 같이 작동하는 서비스를 알고 계십니까? 이것이 일반적인 비즈니스 모델인지 궁금합니다. – Defozo