对于我的rails应用程序,我使用数据属性相当广泛,因为它很容易,并且该网站从未被期望完成或发布,只是我为了个人乐趣而做的事情。原始HTML的一个简短例子是
<span class="player-name" data-id="4" >Example Player</span>
然后我可以通过以下方式访问coffeescript中的'id':
id = $('.player-name').data('id')
我想知道这种数据属性的使用是否会通过编辑开发人员控制台中数据属性的人员使网站容易受到攻击。此外,如果有更好的方法来访问jQuery中的数据,如果有人能指出我正确的方向,我将非常感激。谢谢!
答案 0 :(得分:0)
是的,你是对的。人们可以修改这个。但这对于data-
属性来说并不是唯一的;人们可以修改任何并使用任何参数向服务器发送任何请求。
您应始终验证来自客户端的数据。永远,永远,永远。我经常在应用程序中看到http://example.com/orders/42
这样的网址,其中将42
修改为666
会导致我查看陌生人的订单。哎呀!对于AJAX请求,伪造数据需要花费更多精力,但并不多。人们可以(并且将会!)修改客户端上的任何内容:URL,HTML,JavaScript,CSS等,因此始终错误依赖于安全性。
实际上,这意味着在从Rails应用程序中的数据库中获取对象后,您应该始终检查当前登录的用户是否可以查看此对象。例如,在控制器中,您可以执行以下操作:
def show
# Fetch it from the DB
some_object = SomeObject.find params[:id]
# Make sure the current user is authorized!
raise if some_object.player_id != logged_in_player.id
# ..your controller code..
end
我不一定建议你这样做&#34;手动&#34;就像上面的例子一样。对于Ruby on Rails,有两个众所周知的宝石可以帮助解决这个问题: