투표소에서 SO가 게시물 컨트롤러에 POST하고 URL을 통해 게시물 ID와 투표 유형을 보내고 fkey
매개 변수를 전송하는 XHR 메소드를 구현 한 것으로 나타났습니다. 예 :Stackoverflow와 같은 독특한 사용자 투표를위한 전략은 무엇입니까?
http://stackoverflow.com/posts/1/vote/2
비슷한 기술을 구현하기 위해 동일한 사용자가 중복 투표를하지 못하도록 방지하고 스팸을 방지하기 위해 사용할 논리가 무엇인지 궁금합니다.
지금까지 필자는 다음 글 머리 기호를 생각해 냈습니다.
- 사용자가
- 에 로그인했는지 확인하십시오. 유효한 게시물 ID와 유효한 투표 유형이 전송됩니다.
- POST 후 사용자가 이전에
- 에 투표하지 않았는지 확인합니다. 해시를 생성하는 코드는 사용자 에이전트와 같은 동적 정보를 포함 할 수 없습니다. 다른 브라우저, 다른 OS, 맞습니까?
업데이트 :
"사용자가 로그인 쿠키를 사용하고있는 것 같습니다." - 앤드류
다른 사람이이를 수행하는 방법을 보여줄 수 있습니까? 아니면 다른 말로하면 영숫자 32 비트 문자열 인 fkey
가 어떻게 생성되는지 예를 더 구체적으로 보여줄 수 있습니까?
-
XHR 코드로 실제 사용자 ID를 보내지 않으므로
fkey
대신
fkey
을 저장할 수 있도록 테이블 스키마를 업데이트해야합니다. ,
user_id
?
fkey
는 아마도 각 사용자마다 고유해야 할 것이므로 아마도 투표 테이블에 fkey가있는 행이 있는지 여부를 쿼리 할 수 있습니다.
비슷한 기술을 구현 한 사람이라면 누구나 유용한 정보를 얻을 수 있습니다.
왜 당신이 당신의 XHR 코드 어디에서나 실제 사용자 ID를 전송하지 않습니다에 엑셀 의견에서 당신을 보호 할 것입니다? –
글쎄, 나는 그것을 사용하지 않는 것으로 나타났습니다, 그리고 아마도 좋은 이유 .. 하나는 사용자 정의 양식을 만들 수있는 값으로 사용자 ID 필드를 넣어, 그리고 그것을 게시하고 그것은 유효한 요청이 될거야? 그러나'fkey'와 같은 것을 사용한다면 아무도 사용자를 기반으로 동일한 해시를 얻기 위해 그것을 역 프로그램 할 수 없으므로 나는이 방법을 사용한다고 생각합니다. –
아마도 로그인 쿠키를 사용하여 사용자를 식별하고 있습니다. 방화범이 끌려서 쿠키를 보냈습니다. – Jess