手机app被反编译后(或直接抓包),app与服务器端交互的url就被暴露了,别人也就可以使用这些url做任何事情了。 如何才能保护这些url不被其他人使用呢? 注:这些url是不需要用户登录的,需要用户登录的比较好处理
作为一个游戏开发者,我们是在 http 上自己再做了一层协议封装,外部看来都是在访问一个 url,其实 body 里加密的内容中包含了真实的 url,服务器会根据真实 url 路由到实际的处理函数。 游戏外挂比较多且讨厌,才不得已用此策略。如果只是一个 app,感觉大可不必如此担心 url 暴露,想想那么多网站,url 都是大大方方的写在浏览器地址栏里的,是否安全是靠业务的健壮性保证的,而不是隐藏 url。 Update: 如果要求 url 可以被自己的设备访问但是不要随便被其他人公开访问,那么可能不可避免的需要引入“设备登录”概念了,跟游戏有些类似了。 具体来说就是 app 第一次启动时会生成一个全局唯一 UUID,以此作为用户名到服务器登录,登录密钥是写死在程序里的,当然要尽量保密不能被截获、解密或猜出来。设备必须先用这个 UUID 登录并获得某种 token 之后才能访问服务器资源,也就是说服务器端根本不存在任何可以随意访问的 url,一切都需要在某种 token 的保护之下才行。
作为一个游戏开发者,我们是在 http 上自己再做了一层协议封装,外部看来都是在访问一个 url,其实 body 里加密的内容中包含了真实的 url,服务器会根据真实 url 路由到实际的处理函数。
游戏外挂比较多且讨厌,才不得已用此策略。如果只是一个 app,感觉大可不必如此担心 url 暴露,想想那么多网站,url 都是大大方方的写在浏览器地址栏里的,是否安全是靠业务的健壮性保证的,而不是隐藏 url。
Update:
如果要求 url 可以被自己的设备访问但是不要随便被其他人公开访问,那么可能不可避免的需要引入“设备登录”概念了,跟游戏有些类似了。
具体来说就是 app 第一次启动时会生成一个全局唯一 UUID,以此作为用户名到服务器登录,登录密钥是写死在程序里的,当然要尽量保密不能被截获、解密或猜出来。设备必须先用这个 UUID 登录并获得某种 token 之后才能访问服务器资源,也就是说服务器端根本不存在任何可以随意访问的 url,一切都需要在某种 token 的保护之下才行。