2011-12-10 3 views
5

이 질문은 이전에 묻는 질문이지만, 나에게 맞는 방식으로 설명하는 스레드를 찾을 수 없습니다.AJAX 호출을 "보안"하는 방법은 무엇입니까?

자바 스크립트로 작성된 북마크릿/브라우저 플러그인을 만들고 있습니다. 이 스크립트는 api를 호출하여 한 사이트에서 다른 사이트로 사용자 활동 정보를 효과적으로 보냅니다. (사용자가 페이 스북 상태를 게시 할 때 트윗을 작성한다고 생각하십시오.)

이 사이트는 자바 스크립트를 사이트에로드합니다. 사용중인 API는 API 비밀 코드를 사용하여 MD5 해시를 생성해야합니다. 이것은 문제가되지 않습니다. 저는 다른 곳에서 호스팅하고있는 PHP 스크립트에 아약스 호출을하고 있습니다. 올바른 문자열을 반환합니다.

문제 사용자가 API를 악용하기 위해 포함 된 비밀을 가지고이 동일한 스크립트를 호출하여 자신의 문자열을 생성 할 수 없도록하려는 경우입니다. 이 API를 만들고 싶을 때만이 API에 대한 호출을 허용 할 수있는 방법입니까?

아니면 잘못된 방향에서 접근하고 있습니다.

답변

0

1) GUID와 같이 DB에 토큰을 열어야합니다.

이 guid는 일부 정보를 나타내며 한 번만 실행할 수 있습니다 ("isAlreadyuse"-type bit라는 테이블에 db 필드를 넣음). 지금

,

때 아약스 자체를 호출합니다 - 당신은 서버에이 GUID를 보냅니다.

서버는 "1"thefield을 GUID를

존재와 그 논리를 방출 있는지 확인하고 업데이트합니다.

3

클라이언트가 자바 스크립트를 실행하는 방법을 지정할 수 없습니다. "보안"요청을 만들거나 침입자가 수정하지 않았는지 확인하는 방법은 없습니다. 이것이 클라이언트/서버 시스템의 특성입니다. 페이지 자체는 GreaseMonkey를 사용하여 수정할 수 있으며 임의의 요청은 TamperData를 사용하여 수정하거나 재생할 수 있습니다.

+0

재생 공격은 차단 될 수 있지만 ... 재생은 처음에는 허용 된 동작이 아니라고 가정합니다. –

+1

@pst 자바 스크립트로 할 수 있다면, 공격자는 자바 스크립트로도 할 수 있습니다. – rook

관련 문제