Каковы некоторые примеры кода, которые я могу использовать, чтобы люди не отдали голоса, чтобы дать им более высокий рейтинг, взломав скрипт 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().'")');
Вам также нужно будет добавить время истечения срока действия и т. Д., Но основной смысл в нем есть.
Установите cookies для уже проголосовавших пользователей и запретите голосовать в течение некоторого времени.
Помимо защиты от файлов cookie, добавьте защиту IP-адресов. Один IP-адрес может голосовать только один раз за определенный период времени. Хорошей альтернативой для защиты IP является защита по комбинированной схеме (ip + user_agent + …).
Попросите пользователей ввести captcha, когда они делают действия слишком быстро.
Несколько идей:
Единственный способ помешать им сделать это – иметь хорошую систему аутентификации пользователей. Не допуская этого, вы можете отговорить его с помощью файлов cookie и Captcha .