현재 원격 웹 사이트를 통해 일부 서비스를 제공해야하는 REST/JSON API를 개발 중입니다. 나는이 웹 사이트의 최종 고객을 알지 못하며 API 서버에 계정을 갖고 있지 않아야합니다. API 서버에 존재하는 유일한 계정은 웹 사이트를 식별하는 계정입니다. 이 모든 것이 RESTful이며 따라서 모든 통신은 최종 사용자 브라우저 (자바 스크립트/JSON을 통해)와 내 REST API 서비스 사이에있을 것이므로 중개인의 청구서를 늘리는 데 관심있는 제 3 자에 의해 시스템이 남용되지 않도록하려면 어떻게해야합니까? ? (중개인이 내 서비스를 재판매하는 웹 사이트의 소유자 인 경우). 어떤 인증 방법을 사용하면 사용자가 웹 사이트에서 js 코드를 가져 와서 웹 사이트 소유자를 파산시키는 데 1000000 번이나 걸리는 것을 막을 수 있습니까? 나는 HTTP_REFERER를 사용하려고 생각하고 IP 주소 (어떤 서버가 코드를 호스팅하는지 알아 내고이 IP를 기반으로 인증)를 번역했지만 HTTP_REFERER가 쉽게 스푸핑 될 수 있다고 추정합니다. 내 고객의 최종 고객이 API 서버에 등록하지 않는 경우이 API의 목적을 무효화합니다.나머지 사용자 (AAA)의 나머지 API
몇 가지 아이디어를주십시오.
덕분에, 댄
나는 원격 웹 사이트에 $ _SERVER [ 'REMOTE_ADDR']를 통해 최종 사용자 IP 주소를 제공하고 원격 서버가 $ _SERVER [ 'SERVER_ADDR]을 통해 서버 IP를 제공하도록합니다. ']를 선택하면 API가 JS 코드에서 사용할 만료 토큰을 생성합니다.이 토큰은 고객의 원격 IP에 5 분 정도의 권한을 부여합니다. 이렇게하면 (fopen을 사용하여) IP 주소가 유효한 웹 사이트에서 오는 API에 도달했음을 인증 할 수 있으며 고객은 향후 5 분 동안 원하는 것을 무엇이든 할 수 있습니다. 당신이 볼 수있는 단점이 있습니까? – Dan
5 분이 만료되어 사용자가 갑자기 물건을 사용할 수 없으면 어떻게됩니까? 모든 잠재 고객이 PHP를 사용합니까? – ryan1234
그들이 사용하는 것은 부적절합니다. API 서버가 PHP를 사용하고 $ _SERVER 물건을 사용하고 있습니다. 나는 사용자가 해당 시간 프레임 내에 현재 페이지를 남기지 않으면 ajax를 통해 인증 파일 (fopen을 수행하는 파일)을 300 초마다 호출하는 js 코드로 타이머를 구현할 수 있다고 가정합니다. 그것은 토큰을 갱신합니다. – Dan