0

我正在使用 ajax 调用来调用我必须发布分数的 WCF 服务。我看到了 3 个用于保护它的基本选项,但我不确定哪个是最好的(或者可能是一个组合)或确切地如何做它们中的任何一个。

1)模糊/混淆代码。这甚至可能吗?一个切线只是隐藏了我不希望人们看到的特定变量。我读过一些关于“关闭”的东西,但我并不完全理解。

2)使用某种哈希。和上面一样,我什至可以隐藏它吗?

3) 制衡。基本上不断地向我的服务器提交各种事件的分数以跟踪分数。禁止提交超出定义的可能参数的内容的用户。(即,当没有为该会话“签入”之前的分数时,提交超过 100,000 的分数。

我猜2和3的组合最好。任何链接或提示将不胜感激。

4

2 回答 2

1

1) – 不起作用,JS 代码美化器存在,并且每个人都可以查看您发送的数据,例如在 firebug 网络选项卡中。

闭包是一种将代码封装在函数中的 JS 机制,因此没有“外部”函数可以访问它。不过不会有太大区别,因为我可以愉快地调试您的代码并查看发生了什么。

2) – 行不通,如果你计算客户端的哈希值,我可以 a) 查看算法 b) 在哈希之前篡改数据。

3)可能是您获得一些安全性的最佳选择。

但是如果你想要它“完全安全”,那么你就不想使用像 JavaScript 这样的开放客户端技术——也许 Flash 会是一个更好的选择,当然这对于逆向工程来说也不是完全安全的。但它肯定会设置更高的标准。

于 2012-06-07T21:15:58.973 回答
1

您始终应该从服务器端发布分数,以免access_token向访问者透露您的应用程序。

引用分数的文档

为用户创建或更新分数只要您拥有 publish_actions 权限,您就可以通过向应用
发出 HTTP POST 请求来发布分数或用户。/USER_ID/scoresaccess_token

更新:
由于您似乎试图保护客户端和您的服务之间的通信,通常根据用户在服务器端的操作计算分数要安全得多,这样您就可以专注于可疑行为而不是检测提交给的虚假分数保护您的应用程序。

于 2012-06-07T21:30:00.483 回答