2008-09-25 3 views

답변

6

(가 자신의 에이전트 문자열을 가지고 가정) 수 + 쿠키.

당신이 할 수있는 일은 nonce을 설정하고 양식의 숨김 필드로 사용하십시오. 그런 다음 양식과 함께 전송되는 쿠키에 적용합니다. 쿠키는 숨겨진 필드에 연결되어야하며 일종의 nonce도 포함해야합니다. 마지막으로 양식이 제출되면 쿠키와 숨겨진 필드를 확인하고 해당 필드가 올바른지 확인할 수 있습니다. 원하는 경우 양식에 대한 원래 요청의 IP 주소와 사용자 에이전트에 연결하십시오. 이 모든 것을 약간의 자바 스크립트로 양념을 칠 수도 있습니다. 숨겨진 필드를 비워 두었다가 서버에서 숨겨진 필드 nonce를 요청하려면 일부 아약스를 사용하십시오.

이 방법은 완벽하지는 않지만 80 % -90 %의 속도를 얻을 수 있습니다. 적절한 HTTP 기술을 가진 사람이 여전히 스푸핑 할 수 있습니다.

하지만 질문을 제기하는 이유는 무엇입니까? 그 수준에서 요청을 차별화하려는 이유는 무엇입니까?

또는 사용자가 "제출"버튼을 눌렀는지 여부를 실제로 확인하려고합니까? 이 경우 양식 메서드에 따라 제출 버튼의 이름/값 쌍이 요청 엔터티/쿼리 문자열에 있어야합니다.

0

나는 클라이언트 자체가 공동 운영이 정말

0

하지 않음 (일부 헤더를 설정 클라이언트를 의미)하지 않는 한 불가능하다고 생각합니다. 사용자 에이전트 문자열을 확인할 수는 있지만 호출자가 설정할 수 있습니다.

0

글쎄, 당신은 당신이 숨겨진 양식 필드와 함께 할 가능성이 할 수있는 에이전트 문자열을보고 그것이 browsr 출신 있는지, 또는 클라이언트 응용 프로그램에서

0

클라이언트를 제어 할 수 있으면 보낸 사람을 식별하는 사용자 지정 헤더를 첨부 할 수 있습니다.

XmlHTTPRequests를 만들 때 일부 JavaScript 라이브러리가 이미이를 수행하므로 표준 요청과 다른 Ajax 호출을 처리 할 수 ​​있습니다.

들어오는 각 요청의 헤더를 검사하여 사용할 수있는 것이 있는지 확인하십시오.

0

일부 자바 스크립트를 사용하여 값을 설정하십시오.

0

합법적 인 다른 액세스 방법이나 위조 된 공격 (예 : 일반 사용자처럼 보이게하려는 로봇 또는 해커)에 대해 정체를 나타내려고하는지 여부는 분명하지 않습니다.

첫 번째 경우 keprao에는 헤더를 검사하기위한 훌륭한 조언이 있습니다. 두 번째 경우에는 기본적으로 요청을 구분할 수있는 방법이 없습니다. 로봇은 captcha 또는 인증으로 방해받을 수 있습니다.

관련 문제