什么是一些代码示例,我可以用来阻止人们投票,通过黑客攻击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().'")');
行您还可以在到期的时间及增加,但它的基本JIST是存在的。
注意:如果您在数据库中发现他们最近投了票,您可能需要重置Cookie。 –
将cookie设置为已投票的用户并且不允许投票一段时间。
除了cookies保护之外,还增加了ip地址保护功能。单个IP地址每一段时间只能投一次。 ip保护的好选择是通过组合方案(ip + user_agent + ...)进行保护。
要求用户在操作过快时输入验证码。
顺便说一句,你不需要保持整个IP日志。只保留最近1个小时的日志 - 这将甚至足够。 – Kirzilla
一对夫妇的想法:
- 使用CAPTCHA
- 记录IP地址(按照您的隐私政策,当然)
阻止他们这样做的唯一方法是建立一个良好的用户认证系统。除此之外,你可以通过使用cookies和Captcha来阻止它。
- 1. AJAX + PHP投票系统
- 2. php-mysql投票系统?
- 3. 如何防止游戏投票系统,人们可以每天投票一次?
- 4. 如何建立投票系统来支持多种投票类型的投票?
- 5. 在投票系统上只允许每个人投一票
- 6. jQuery投票系统
- 7. Java投票系统
- 8. 在投票系统
- 9. 投票系统java
- 10. 如何投票投票系统?
- 11. jQuery,PHP和Smarty的投票系统
- 12. 带有会话的PHP投票系统?
- 13. 的MySQL/PHP逻辑“投票”系统
- 14. 简单的PHP投票系统
- 15. 计算投票 - PHP和MySQL投票系统
- 16. 停止会话劫持
- 17. PHP + MySQL限制IP投票系统
- 18. php投票系统 - 数据库问题
- 19. 投票系统在PHP和MySQL的状态投票,像总统选举
- 20. 投票系统与jQuery AJAX
- 21. Symfony框架投票系统
- 22. 投票系统问题
- 23. 开源投票系统
- 24. 投票系统在ASP.NET MVC
- 25. 投票系统问题
- 26. PHP投票系统,如何阻止垃圾邮件?
- 27. 使用单选按钮和复选框的投票系统(PHP)
- 28. PHP/MySQL:在投票系统中,如何让用户看到他已投票的个人资料?
- 29. 投票系统,简单VS有用
- 30. 使用PHP的票务系统
呃,我不明白这个问题。当然,脚本运行在用户无法访问的服务器上,对吧?也就是说,他们不应该访问实际的PHP脚本,只能调用它。 –
我的朋友,你将不得不进入更多的细节。 :) –