首先,抱歉这个问题的格式。我知道这个网站的规则,但我以前没有工作也没有调查,因为,基本上,我不知道从哪里开始......
我满足于我开始的提示。
我正在搜索如何限制来自(仅)本机移动应用程序(ios和android)的expressjs中的api休息调用。我在想象,但我不认为这是一个非常安全的想法,因为任何人都可以拿出令牌并模拟成为移动应用,或者我错了?
提前致谢!
答案 0 :(得分:2)
您不能仅限本机移动应用程序限制对REST API的访问。互联网是开放的,可以从任何客户端访问,因此如果您有一个REST服务器,那么任何客户端都可以访问它,无论是否移动。
您可以通过身份验证控制访问权限。因此,通常做的是要求某种帐户访问权限,然后让您的服务器监视意外或未经授权的使用,如果找到,则禁用该帐户。
你也可以嵌入"秘密"您的移动应用中的凭据并将其用作SSL授权,但如果他们愿意,确定的黑客仍然可以从您的应用中获取凭据。
答案 1 :(得分:2)
您无法限制公共REST Api。您的移动用户发送的任何请求也可以由任何人发送。
也许你可以保守秘密'字符串和attcah到http请求,但它可以通过嗅探http流量或反编译apk轻松暴露。
您的最后一个选项是限制通过IP访问,但我不知道它是否适合您的情况。
答案 2 :(得分:1)
任何人都可以模拟任何API,它只需要一个嗅探器和对正确数据格式的理解(比如客户端应用程序发送的JSON对象的格式)。
任何人都可以继续,弄清楚WhatsApp如何工作并模拟这样的应用程序。当你首先让每个用户都到Sign up
,然后“模拟器”也必须模拟那个过程时,甚至会发生这种情况。
但是,一般来说,开发人员想要的是:
第1点意味着第2点,但第2点并不意味着第1点。如果没有您的应用程序,您无法阻止黑客或某人使用您的API,您可以使用某些技术减慢他的模拟器开发过程。
然后你可能会问,他不能用数百万的请求充斥你的服务器?他当然可以。那是DoS attack。理论上,他甚至可以使用manny android模拟器并安装你的应用程序,然后用数百万的请求充斥你的服务器。
任何人都可以使用您的API,如果您打开它到互联网世界。