사람들이 PHP 스크립트를 해킹하여 더 높은 등급을 부여하기 위해 투표를 중단하는 데 사용할 수있는 몇 가지 코드 예제는 무엇입니까?PHP를 사용하여 투표 시스템을 하이재킹하지 못하도록 막으시겠습니까?
답변
방어의 첫 번째 줄은 쿠키.
기본적으로 컴퓨터에 쿠키를 설정하고 투표가있는 경우 투표를 사용하지 않도록 설정합니다.
setcookie('cookiename', 'voted=1');
// and later
if(isset($_COOKIE['cookiename']) && $_COOKIE['cookiename'] = "voted=1")
{
// error
}
이렇게하면 투표의 유효성을 검사하기 위해 필요한 데이터베이스 호출이 제거됩니다. 캐싱과 같기 때문에 이것을 유지하는 것이 좋습니다. 소수의 사람들이 데이터베이스에 더 잘 부딪칩니다.
두 번째 방어선은 IP 제한입니다. 기본적으로 데이터베이스의 IP 주소 로그를 확인하고 최근에 투표를했는지 확인합니다.
mysql_query('INSERT INTO TABLE (`IP_ADDR`, `TIME`) VALUES("'.$_SERVER['REMOTE_ADDR'].'", "'.time().'")');
// and later
$results = mysql_query('SELECT IP_ADDR FROM TABLE WHERE IP_ADDR="'.$_SERVER['REMOTE_ADDR'].'"');
if(mysql_num_rows($results) != 0)
{
// error
}
당신은 또한 만료 시간 등을 추가해야합니다
if(isset($_COOKIE['cookiename']) && $_COOKIE['cookiename'] = "voted=1")
{
die("You have voted recently.");
}
$results = mysql_query('SELECT IP_ADDR FROM TABLE WHERE IP_ADDR="'.$_SERVER['REMOTE_ADDR'].'"');
if(mysql_num_rows($results) != 0)
{
die("You have voted recently");
}
//Do Voting Stuff Here
vote($_GET['vote']);
// Record the vote.
setcookie('cookiename', 'voted=1');
mysql_query('INSERT INTO TABLE (`IP_ADDR`, `TIME`) VALUES("'.$_SERVER['REMOTE_ADDR'].'", "'.time().'")');
의 라인을 따라 무언가로 전체 스크립트를 켜기 만의 기본 JIST가있다.
참고 : 데이터베이스에서 최근에 투표 한 쿠키를 찾으면 쿠키를 재설정해야 할 수 있습니다. –
이미 투표 한 사용자에게 쿠키를 설정하고 잠시 동안 투표를 거부하십시오.
쿠키 추가 보호 기능은 IP 주소 보호 기능을 추가합니다. 단일 IP 주소는 일정 기간 동안 한 번만 투표 할 수 있습니다. ip 보호를위한 좋은 대안은 결합 된 체계 (ip + user_agent + ...)에 의한 보호입니다.
너무 빠른 동작을 할 때 captcha를 입력하도록 사용자에게 요청하십시오.
Btw., 당신은 전체 IP 로그를 유지할 필요가 없습니다. 지난 1 시간 동안 만 기록을 유지하십시오. 충분하지 않을 수도 있습니다. – Kirzilla
아이디어의 몇 :
- 를 사용하여 보안 문자 (물론 개인 정보 보호 정책에 따라)
- 기록 IP 주소가 이
이렇게하지 못하게하는 유일한 방법은 우수한 사용자 인증 시스템을 갖추는 것입니다. 쿠키가 없으면 Captcha으로 쿠키를 사용하지 못하게 할 수 있습니다.
- 1. jQuery로 창을 닫지 못하도록 막으시겠습니까?
- 2. Eclipse가 프로젝트를 빌드하지 못하도록 막으시겠습니까?
- 3. django에서 javascript/frames를 가져 오지 못하도록 막으시겠습니까?
- 4. Mac 랩톱을 닫을 때 잠자기하지 못하도록 막으시겠습니까?
- 5. iscroll로 페이지 상단으로 스크롤하지 못하도록 막으시겠습니까?
- 6. 스키마가 수퍼 클래스를 스키마에 추가하지 못하도록 막으시겠습니까?
- 7. php를 사용하여 결제 시스템을 만드는 것이 좋습니다.
- 8. 여러 사용자가 추천 시스템을 사용하지 못하도록 막으십시오.
- 9. 사람들이 하루에 한 번 투표 할 수있는 투표 시스템을 게임에서 방지하려면 어떻게해야합니까?
- 10. PHP를 사용하여 개인 메시징 시스템을 구축하는 방법에 대한 자습서 찾기
- 11. 공개 투표 시스템을 제공함에 따른 의미는 무엇입니까 (로그인 필요 없음)?
- 12. IIS7 재 작성에서 "index.php"를 경로 재 지정시 추가하지 못하도록 막으시겠습니까?
- 13. ajax/jquery/php (효율적인)를 사용하여 stackoverflow와 같은 투표 시스템을 만드는 방법
- 14. MySQL/PHP Logic "투표"시스템
- 15. Ajax 투표 시스템 만들기
- 16. 투표 기능 수정
- 17. Drupal 코드를 통한 투표 API에서 투표 작성하기
- 18. PHP를 사용하여 로그인 시스템
- 19. 투표 시작부터
- 20. Django 주석 프레임 및 투표
- 21. UML을 사용하여 투표 및 설명 프로세스를 설명하십시오.
- 22. PHP를 사용하여 테이블을 생성하는 중 문제가 발생했습니다.
- 23. 파일 시스템을 사용하여 램을 늘리십시오
- 24. Java를 사용하여 시스템을 일시적으로 제어하십시오.
- 25. "Vote it up"및 워드 프레스를 사용하여 최상위 투표 정렬
- 26. 투표 방법 - MySQL
- 27. jQuery를 사용하여 모바일 브라우저를 필터링하지 못하도록 필터링
- 28. mshtml을 사용하여 contentEditable을 설정하고 div를 선택하지 못하도록
- 29. 공개 스트림에 투표 표시
- 30. 번호 PHP를 사용하여 Sanitization
음, 나는 질문하지 않습니다. 확실히 스크립트는 사용자가 액세스 할 수없는 서버에서 실행 중입니까? 즉, 그들은 실제 PHP 스크립트에 액세스 할 수 없어야 만 호출 할 수 있습니다. –
당신은 그것보다 훨씬 더 자세하게 들어야 할 것입니다. :) –