防止API的“欺骗”或“黑客攻击”。

4
我创建了这个web应用程序并创建了这个API。为了简单起见,让我们保持简单:
我的应用程序需要知道用户拥有多少“积分”。 API有一个名为get_credits的调用,返回{积分:1000}。
现在,我该如何防止某人使用hostfile(或其他方法)创建自己的api,返回{积分:2000}。
我考虑插入某种哈希值,但因为它是javascript,所以哈希值很容易从源代码中提取出来。握手也是一样吧。
那么,我该如何使API足够安全?

1
网页应用是由您控制的吗?还是API?或两者都有?用户如何影响您的网页应用使用哪个API? - user684934
谢谢大家,我知道我不能信任应用程序或用户,但我希望还有一些我尚未想到的方法。我感谢所有的反馈。这是一个游戏,积分数量决定了可用内容,所以我必须相信应用程序来确定积分的真实性。我将尝试使用一些混淆和哈希算法,至少使它尽可能困难 :) 谢谢! - nizzle
3个回答

3
您需要以一种不同的方式来创建一个真正安全的应用程序。您永远不应该信任最终用户的应用程序,因为用户或黑客可能会修改代码。
因此,我建议将所有购买等操作都保留在服务器上。由于我对您的系统了解有限,所以无法提供太多帮助。
如果为每个项目生成一个哈希值,那么这个哈希值可以让用户向其他用户显示他确实购买了该项目,这将是很好的。
请注意,这个哈希值必须是长且强大的,并且必须是唯一的,否则用户可能会通过暴力破解获得它们。
我希望您能理解我的回答并且它能帮到您。;-)

0
如果是客户端,你没有太多可以做的 -尽力而为。但是你必须确保在回发时验证答复。永远不要相信用户 :-)

0
我现在要告诉你我的系统是如何工作的。 为了在游戏中获得积分,我会发起一个ajax请求来加载它们。这个ajax请求调用一个简单的php页面,在那里有一个"echo $credits;"。所以,它是不可能被黑客攻击的。如果有人修改了客户端积分,在他们请求礼物时,我会用php检查服务器端积分,以确保它们是合法的:P - 请考虑检查您的系统是否容易受到mysql注入攻击,以防止有人黑掉您的积分系统:D

1
你可以使用 Fiddler 拦截调用并返回任何你想要的内容。 - Ross Dargan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接