Google app engine 如何保护使用GAE编写的评级系统(即只允许一票)?

Google app engine 如何保护使用GAE编写的评级系统(即只允许一票)?,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,加载我的站点时,我会获得唯一的用户id。用户无法更改它-该站点作为iframe加载,id通过get传递: if self.request.get('user_id'): user = User(key_name="id"+self.request.get('viewer_id')) user.put() 它可以用于每个用户id只允许一次投票。但我如何才能安全地将其传递到另一个GAE页面?即,用户加载了我的第一个页面,我已将其id保存到数据存储(usermodel)。用户将在

加载我的站点时,我会获得唯一的用户id。用户无法更改它-该站点作为iframe加载,id通过get传递:

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

它可以用于每个用户id只允许一次投票。但我如何才能安全地将其传递到另一个GAE页面?即,用户加载了我的第一个页面,我已将其id保存到数据存储(
user
model)。用户将在另一页上投票-我无法将其id作为
?id=12345
传递到另一页。我应该怎么做才能在另一个页面上知道这个id(这样用户就无法更改它)?

这个机制首先是不安全的-用户可以很容易地在浏览器中查看iframe,确定如何传入id,并将其更改为传入他们希望传入的任何id。您需要找到一种从主机站点获取用户ID的方法,该方法实际上是安全的


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

好的,我在第一页找到了验证用户ID的方法(第三方网站为我提供了额外的验证参数)。你能给我提供更多关于你答案第二部分的细节吗?我可以在第一页生成一些uuid并将其分配给这个用户(在我的数据存储中),将其保存到cookie中,然后在每个页面上使用吗?@LA_u使用现有的会话库,比如bicker(假设您使用的是Python;您不会说),而不是发明自己的会话库。