Остановить людей от угона системы голосования с использованием PHP?

Каковы некоторые примеры кода, которые я могу использовать, чтобы люди не отдали голоса, чтобы дать им более высокий рейтинг, взломав скрипт php?

Первая линия защиты – это печенье.

В основном, вы устанавливаете cookie на своей машине и отключите голосование, если оно присутствует.

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().'")'); 

Вам также нужно будет добавить время истечения срока действия и т. Д., Но основной смысл в нем есть.

  1. Установите cookies для уже проголосовавших пользователей и запретите голосовать в течение некоторого времени.

  2. Помимо защиты от файлов cookie, добавьте защиту IP-адресов. Один IP-адрес может голосовать только один раз за определенный период времени. Хорошей альтернативой для защиты IP является защита по комбинированной схеме (ip + user_agent + …).

  3. Попросите пользователей ввести captcha, когда они делают действия слишком быстро.

Несколько идей:

  1. Использовать CAPTCHA
  2. Запишите IP-адрес (в соответствии с вашей политикой конфиденциальности, конечно)

Единственный способ помешать им сделать это – иметь хорошую систему аутентификации пользователей. Не допуская этого, вы можете отговорить его с помощью файлов cookie и Captcha .