首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >投票系统黑客证据

投票系统黑客证据
EN

Stack Overflow用户
提问于 2011-12-22 19:32:43
回答 2查看 802关注 0票数 1

我正在实现一个类似Stackoverflow的投票系统,我该如何实现它才能防止黑客攻击呢?

我有一些PHP,它可以根据javascript解析后发送的ajax请求来执行数据库工作。执行查询来检查用户的当前投票状态是否足以避免未经授权的投票?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-22 19:38:33

实现相当可靠的解决方案是绝对可能的。但是这个必须在服务器端完成。

安全的基本规则:您不信任客户端数据。

把你所有的检查都移到PHP上,让你的javascript变得像

代码语言:javascript
复制
$(".vote").click(function(e) {
    $.post('/vote.php', vote_data, function(result) {
        // update UI according to returned result
    }
}

然而,这是一件常见的事情,仍然在客户端进行检查,但作为一种提高可用性(标记未填充的必填表单域)或减少服务器负载(通过不发送明显不完整的数据)的方式。这些客户端检查是为了用户的舒适度,而不是为了您的安全。

回答您更新的问题

如果你存储了用户投票给哪个问题的完整日志,那么是的,很容易防止多次投票(当用户可以多次投票支持同一问题时)。当然,假设匿名投票是不允许的。

但是如果你有一个受欢迎的网站,这个日志可能会变得很大,并成为一个问题。一些系统试图通过禁用对旧文章的投票(并删除相应的日志条目)来逃脱。

如果有人故意攻击我怎么办?

恶意用户可以执行不同类型的攻击。

CSRF (cross-site request forgery)

文章列举了一些防止攻击的方法。现代Ruby on Rails具有内置保护功能,默认情况下处于启用状态。不知道在PHP世界里是怎么回事。

Clickjacking

这种攻击会诱使用户点击一些不是他们所想的东西。例如,他们可能会点击“播放视频”,但网站会截获这种点击,并将其发布到用户的墙上。

网上也有一些文章。

票数 7
EN

Stack Overflow用户

发布于 2011-12-22 19:36:10

注意:这是对 的回答

不要因为操作员从根本上改变了他的问题就否决它。

这是一个巨大的错误,,即使仅仅是考虑依赖浏览器端组件来执行应用程序逻辑。在不受信任的环境中,应该只使用来表示。

所有应用程序逻辑都应该在服务器端实现、验证和执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8603285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档