2014-04-09 6 views
1

트위터와 같은 PHP 사이트에 다음 시스템이 있습니다. 다른 사용자를 추적하려면 사용자는 따라야하는 사용자의 프로필에서 관심 사용자 버튼을 클릭합니다.다음 시스템에서 수동 POST 요청 방지

그런 다음 원하는 사용자 ID로 ajax 게시물 요청을 보냅니다.

내가 브라우저 콘솔에서이를 작성하여 모두 다음 사용자가 스팸 메일을 방지하는 방법을 해결하려고 노력 해요 :

for(var i = 0; i<10000000; i++){ 
    followUser(i) // followUser is the ajax request 
} 

내 제안 된 솔루션입니다 :

각 단일 사용 토큰을 추가 CSRF/이중 제출 보호와 같이 세션에 저장된 토큰에 대해 요청하고 확인합니다.

해당 솔루션에 문제가 있습니까? 익명 JavaScript 함수를 사용하여 보았지만 클라이언트가 아닌 서버 측에서 이러한 사항을 방지하는 것이 더 안전하다고 보입니다.

+3

이렇게 추측 할 수없는 숨겨진 사용자 ID도 구현할 수 있습니다. 그것 이외에, 1 회용 토큰도 제 생각입니다. (여전히 더 많은 노력으로 스패밍 할 수 있습니다.) – ToBe

답변

1

해당 솔루션에 문제가 있습니까?

문서 당 DOM/JS 컨텍스트에 토큰을 저장하면 탐색 및 응용 프로그램의 다중 탭 사용이 중단 될 수 있습니다. (예를 들어 누군가를 따라 가서 이전 페이지에서 뒤로와 다른 사람을 클릭하면 이전 페이지의 토큰이 유효하지 않으므로 작업이 실패합니다.) 이것이 CSRF 토큰이 일반적으로 좋지 않은 이유입니다.

클라이언트가 아닌 서버 측에서 이러한 것들을 방지하는 것이 더 안전합니다.

실제로 단일 사용 토큰이 사용자가 대량 요청을하는 것을 실제로 막지는 않지만, 매번 새로운 토큰을 가져와야 함을 의미합니다.

정말 필요한 것이 서버 측 속도 제한 솔루션의 일종이라고 들립니다. 이는 서버 수준 (mod_evasive 외) 및/또는 응용 프로그램에서 구현할 수 있습니다 (민감한 것으로 식별 된 특정 기능을 대상으로 제한하려는 경우 필요).

위협 모델은 무엇입니까? 하나의 계정을 갖는 것이 모두가 즉시 공격처럼 보이지는 않는지 확인하십시오. 부정적인 영향은 무엇이며 공격자는 왜이를 수행하려고합니까? 예를 들어 "모든 사용자에게 알림을 전송하여 불쾌감을주는 것"과 같은 좋은 대답은 알림을 관리/무시할 수있는 더 나은 도구를 제공하는 데 있습니다.

+0

토큰에 문제가 있으며 다중 토큰으로 문제가 해결되지 않습니다. 위협은 다른 사용자를 스팸하기 위해 악용 될 수있는 또 다른 공유 조치가 있다는 것입니다. 이 경우의 해결책은 주식 수를 제한하는 것입니다. 나는 의견에서 제안한 @ToBe가 올바른 결정이 될 것이라고 추측하기 어려운 ID를 사용하는 것 외에 제안한 요청의 속도를 제한하는 해결책을 생각합니다. 당신의 도움을 주셔서 감사합니다. – paul