我有一个用JavaScript和HTML5 canvas标签编写的简单游戏。我正在使用AJAX,它将数据发送到服务器并相应地更新数据库。我遇到的问题是,我正在验证服务器端的所有内容,用户只需在AJAX请求中发送ID,然后一切都基于该ID进行。
我对此感到满意,但问题是,用户可以按自己的喜好操纵数据并发送错误的数据(例如,发送其他人的ID),服务器将对此进行处理。因此,如果说,我在我的帐户上,然后像往常一样将ID发送到服务器,一切正常,现在说有人知道我的ID,或者我告诉他们,他们将其发送出去。
他们俩都可以同时发送ID,并且可以正常工作,因为执行任务的ID是有效的,但是两个用户不应将数据发送到服务器。
在我的数据库中,我有一个“ LoginSession”表,其中存储了用户ID,登录日期,退出日期和IP。因此,当用户登录后,我便存储了他们的IP。
因此,我打算解决此问题的方法基本上是,当他们向服务器发送ID时,我将检查他们当前的IP是否是他们登录时使用的IP,如果不是,则执行操作。
因此,对于我现在的实际问题,这是否是执行此操作的好方法?他们的IP可以在会话中更改吗,还是用户可以更改其IP以匹配现有IP?一切都存储在数据库中,一切都在服务器端进行了验证,我唯一的问题是,基本上,用户可以“多次登录”并作弊以获得更快的积分。
您应该在游戏会话开始时创建一个哈希,将其存储为cookie并使用它。它可以基于时间戳和用户的实际ID。然后,您可以使用播放器IP地址强制执行此操作。如果哈希值与IP不匹配,则挑战用户,或者强迫用户再次登录,或者使旧的哈希值无效并为用户创建新的哈希值。确保只有一个播放器为该用户提供数据。
另外,我不会仅信任IP,因为它可能被欺骗或更改。您还必须考虑到许多播放器可能共享相同的IP地址。
您还可以从User-Agent检索有关客户端系统的基本详细信息(例如,操作系统和浏览器版本)。当您创建哈希存储时,IP旁边的那些详细信息以及任何这些细节之一不匹配时,都将使哈希无效。这将迫使黑客不仅欺骗IP,还欺骗他的浏览器(或具有与客户端相同的设置)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句