2009-05-13 3 views
2

나는 이것을 JQuery Ajax Voting system guide을 대략적인 참고 자료로 사용하고 있지만이 보안에 조금 문제가 있습니다. 지금이 가이드는 기본적으로 무언가의 ID와 그것에 대한 투표 통계를 저장합니다.JQuery Ajax 투표

나는 비슷한 생각을하고 싶습니다만 사용자가 한 번만 투표 할 수 있도록 userID도 포함시켜야합니다. 이것은 PHP 세션 변수에 저장되어 있고 호출 된 아약스 페이지가 해당 세션에 대한 액세스 권한을 가지는지 아닌지 궁금합니다. 그렇지 않은 경우 매개 변수를 전달하는 안전한 방법은 무엇이므로 중간 공격을받은 사람이나 가짜 사람이 도용 할 수 없습니다.

+0

바로이 튜토리얼을 읽고 나면 Google 검색에서 우연히 발견했습니다! - 좋은 질문, +1 :) 투표 시스템을 매우 비슷하게 만들고 있습니다. –

+0

@Tim Post 도움이 된다니 기뻤습니다 :) –

답변

3

스크립트 상단에 session_start();을 수행하는 한 서버는 AJAX 호출을 통해 세션 데이터에 액세스 할 수 있습니다. 또한 자습서에서 mysql_real_escape_string을 통해 데이터를 전달하지 않고 쿼리를 수행하고 있으므로 데이터를 위생적으로 처리해야합니다. 또한 중복 표가 없도록 투표 표에서 UNIQUE KEY(user_id, id)을 수행해야합니다.

+0

매개 변수화 된 쿼리를 사용하므로 실제로는 mysql 라이브러리 대신 PDO를 사용하고 있습니다. 또한 고유 한 (user_id, id)에 설정된 복합 키가 있습니다. 그걸 덮어야한다고 생각해. 그렇지? –

+0

예. 넌 잘하는거야. –

1

실제로 사용자 투표를 저장하는 핸들러에서 동일한 Session 변수를 가져올 수 있어야합니다.

기본적인 보안 수단으로 페이지에서 AJAX 호출 전에 투표로 UserId를 암호화하고 세션에서 사용할 수없는 경우 삽입 할 때 UserId의 암호를 해독 할 수 있습니다.