2011-10-16 18 views
0

当我的网站被加载时,我得到唯一的用户ID。用户不能更改它 - 该网站是加载iframe和ID传递直通GET:如何保护使用GAE编写的评分系统(即只允许一票)?

if self.request.get('user_id'): 
    user = User(key_name="id"+self.request.get('viewer_id')) 
    user.put() 

它可以用来让每一个用户ID只能投一票。但是,我怎样才能安全地将它传递给另一个GAE页面?即用户加载了我的第一页,我已将他/她的ID保存到数据存储区(User型号)。用户将在另一页上投票 - 我无法将他的ID作为?id=12345传递给另一页。我应该怎么做才能在另一个页面上知道这个ID(这样用户将无法更改)?

回答

1

这种机制首先不安全 - 用户可以轻松地在浏览器中查看iframe,确定如何传入ID,并更改它以传入他们希望的任何ID。您需要制定一种从主机站点获取实际安全的用户标识的方法。

至于确保用户之后不能互相模仿,您应该使用会话库来建立cookie会话,并将用户的ID存储在会话状态中。

+0

好的,我找到了在第一页验证user_id的方法(第三方站点为我提供了额外的验证参数)。你能否给我提供关于答案第二部分的更多细节?我能否在第一页生成一些uuid并将其分配给此用户(在我的数据存储区中),将其保存到cookie中,然后在每个页面上使用? –

+0

@LA_使用现有的会话库,比如Beaker(假设你正在使用Python;你不这么说),而不是发明自己的。 –