2013-10-19 2 views
0

나는 모든 데이터를 얻기 위해 API를 개발했습니다.사용자 IP 주소를 기반으로 한 API

사이트에는 사용자 등록 시스템이나 API를 호출하는 사용자를 식별 할 수있는 것이 없습니다. 내가 전화를하는 사용자를 식별 할 수 있다면 누군가가 API를 오용하거나 공격 할 때마다 나는 그의 IP를 금지 할 수도 있습니다.

사용자 IP 또는 MAC 주소를 기반으로 API 키를 생성 할 생각이 있습니다 만 안전하게 할 수 있습니까? 다른 제안?

+2

백엔드 서비스는 무엇입니까? API는 무엇을 이용할 수 있습니까? –

+1

MAC 주소에 액세스 할 수 없으므로 잊어 버리십시오. 클라이언트의 IP 주소는 ISP에 의해 변경되거나 NAT 또는 프록시 서버가있는 라우터에 의해 마스킹되므로 정확하지 않을 수 있습니다. 당신은 다른 것을 생각할 필요가 있습니다. –

+0

@ChristianTernus 백엔드는 PHP를 기반으로하며 API는 모든 게시물을 가져올 수있는 권한 만 가지고 있습니다. –

답변

3

먼저, 최종 사용자의 MAC 주소를 얻지 못합니다. 들어오는 패킷의 MAC 주소를 읽었을지라도 라우터의 MAC 주소 만 가져옵니다 (차단을 원하지 않는 라우터는 확실합니다).

사용자 IP는 매우 쉽게 변경 및/또는 스푸핑 할 수 있습니다 또는 혼란스러운 대리 자바 스크립트 등). 나쁜 요청을하는 사람들을 차단하는 것은 좋은 생각이지만 인증을 위해 사용하고 싶지는 않습니다.

HTTP 요청 (경로, 헤더 등)에서 공격자가 제어하는 ​​입력을 모두 고려해야하며 거기에 포함 된 정보만을 기반으로 인증 결정을 내리지 않아야합니다.

PHP 백엔드가 있다고합니다. 왜 그것을 통해 API 키를 생성하는 시스템을 구축하지 않습니까?

+1

PHP 백엔드 API가 UDP를 사용하지 않는다면 공격자는 SYN flood DOS 공격 이상으로 IP 주소를 스푸핑 할 수 없습니다. –

+0

TCP 시퀀스 번호에 대한 몇 가지 흥미 진진한 공격 외에도 당연한 것입니다. 그러나 감염된 호스트에서 악성 코드를 사용하여 새로운 IP에서 API 키를 요청하는 것은 쉽습니다. 봇넷이 항상 그렇게합니다. 그게 전부입니다. –

2

그것은 절대적으로 잘못된 당신이 할 수 없습니다, 그래서 당신은 NAT 뒤에

많은 사용자가 당신을 위해 동일한 IP 주소를해야합니다 JS/PHP에서 방법이 없습니다, 사용자의 MAC 주소를 얻을 수 없다 그들을 구별하십시오

1

여러 가지 이유로 IP 주소를 금지하는 것은 좋지 않습니다. 어쨌든 해커가 IP 주소를 스푸핑 할 수 있으므로이 기술은 쓸모가 없습니다.

IP를 기반으로 API 호출을 조절할 수 있습니다. 즉 초당 IP 당 통화 수를 제한합니다.

당신이 도움이 될 수 : http://blog.programmableweb.com/2007/04/02/12-ways-to-limit-an-api/

2

당신은 어떤 사용자 등록 시스템이없는 말, 왜 당신은 API 키를 생성 것인가?

두 가지를 모두 가질 수는 없습니다. 요청이 익명이거나 사용자가 등록하는 경우 API 키 (HTTPS를 사용하여 키를 도난 당하지 않도록)를 제공 할 수 있으며 사용 케이스에 따라 IP 주소 범위를 추가로 제한 할 수 있습니다.

다른 사람들이 대답 한 것처럼 MAC 주소는 동일한 실제 네트워크에서만 사용할 수 있습니다. 그들은 라우터를 거치지 않으므로 인터넷을 여행하지 않습니다. 물리적 네트워크 외부의 다른 사람의 MAC 주소에 액세스 할 수있는 권한이 없습니다 (사용자가 스푸핑 될 수있는 응용 프로그램을 수집 한 경우가 아니면).

IP 주소는 동적 일 수 있으며 일부 사람들은 지리, ISP, 이동 통신사 또는 비즈니스를 기반으로 IP 주소를 공유합니다. 게다가 우리 중 많은 사람들이 쉽게 IP 주소를 변경할 수 있으므로 IP 주소로 액세스를 관리하기가 어렵습니다.

몇 가지 함정이 있으며 공용 API를 관리하는 데 추가 시간이 필요합니다. 침입자와 동시에 무고하고 정직한 사용자를 차단할 수도 있다는 사실에도 불구하고 IP 주소 또는 IP 주소 범위를 기꺼이 차단해야합니다. 신청서가 무료 인 경우 예상되는 서비스 수준이없고 계약이 없으므로 더 많은 자유를 줄 수 있지만 법률 계약을 맺고 싶을 수 있습니다.

많은 공개 API는 여전히 IP 주소로 추적하고 시스템을 악용하는 것처럼 보이는 모든 IP 주소의 요청을 단순히 감속시키기 위해 타깃을 구현합니다. 이렇게하면 동일한 IP 주소의 합법적 인 사용자는 더 느리지 만 계속 수행 할 수 있습니다.

일반적으로 누군가가 공격하려고하는 서비스가 대중적이라면 일반적으로 좋은 신호이므로 너무 일찍 걱정하지 마세요. 느린 서버에서 기다리는 것에 지쳐서 응용 프로그램의 실패 원인을 원하지 않습니다.

다른 옵션은 사용자를 등록 시켜서 악용 사례를 발견 할 때 IP 주소가 아닌 자격 증명으로 차단할 수 있도록하는 것입니다.

관련 문제