el_*_*_le 1 security authorization
我正在实施像Stackoverflow这样的投票系统.我怎样才能实现这一点,这是黑客证明?
我有一些PHP根据javascript解析后发送的ajax请求进行数据库工作.是否会进行查询以检查用户的当前投票状态是否足以避免未经授权的投票?
绝对可以实现非常可靠的解决方案.但这必须在服务器端完成.
安全的基本规则:您不信任客户端数据.
将所有支票移至PHP并使您的JavaScript变得愚蠢
$(".vote").click(function(e) {
$.post('/vote.php', vote_data, function(result) {
// update UI according to returned result
}
}
Run Code Online (Sandbox Code Playgroud)
但是,仍然需要对客户端进行检查,但这是一种提高可用性(标记未填充的必填表单字段)或减少服务器负载(通过不发送明显不完整的数据)的方法.这些客户端检查是为了用户的舒适,而不是为了您的安全.
回答您更新的问题:
如果你存储了哪个用户投票选择哪个问题的完整日志,那么是的,很容易防止多次投票(当用户可以多次投票同样的事情时).当然,假设不允许匿名投票.
但是如果你有一个受欢迎的网站,这个日志可能会变得很大并且成为一个问题.有些系统试图通过禁用对旧文章的投票(并删除相应的日志条目)来逃避.
如果有人故意试图破解我怎么办?
恶意用户可以执行不同类型的攻击.
CSRF(跨站请求伪造)
本文列出了一些防止攻击的方法.Modern Ruby on Rails具有内置保护功能,默认情况下已启用.不知道PHP世界是怎么回事.
点击劫持
这种攻击诱使用户点击他们想不到的东西.例如,他们可能会点击"播放视频",但该网站会截取此点击并在用户的墙上发布.
网上也有一些文章.