我如何确保移动应用程序不会窃取 user/password 调用我的 REST API
How do I ensure mobile apps doesn't steal user/password calling my REST API
我们正在开发一个基于 REST 的 API 开发者可以从他们的移动应用程序调用,例如google 播放应用程序。
我们如何确保应用程序开发人员不会通过存储或发送用户 user/pass 来窃取用户 "EvilServer"。
如果我们不信任应用开发者,是否存在解决此问题的技术方案?
一种解决方案是在原生平台上拥有我们自己的可信身份验证应用程序,让应用程序开发人员使用它来进行身份验证吗?
OAuth 试图通过在将用户带回原始站点或应用程序之前将用户发送到提供商进行身份验证来解决此问题。这就是 "Log in with Facebook" 和 "Log in with Twitter" 系统的工作方式。
http://www.quora.com/How-does-Login-with-Facebook-option-work-on-third-party-websites 上有一个方便的图表,显示了请求是如何来回传递的。
我建议首先取消第三方应用程序使用用户凭据登录您的服务的功能,这样应用程序就没有理由首先询问用户的凭据.
我会向第三方开发人员提供 OAuth
authentication endpoint (take a look at the server-side flow),以便他们使用 您的 身份验证服务在他们的应用程序中注册和验证用户。这很有趣,因为用户在登录时必须被重定向到您的身份验证端点,因此第三方应用程序不可能随时访问他们的凭据。
但是,没有什么可以阻止恶意应用程序的开发者创建虚假表单,要求用户提供敏感信息才能登录,例如电子邮件和密码。
在这种情况下,您可以做两件事:
- 首先,教育您的用户(例如,当他们创建自己的帐户时)不要在您网站以外的任何其他网站上提供他们的凭据。这通常由银行和保险公司完成。
- 实施
Multi-Factor Authentication
为您的身份验证过程添加另一层安全性。 Google 或 Twitter 等大多数网络公司允许您要求在登录时提供您常用的凭据,但您仍然需要使用 带外 [=29] 验证登录过程=] 中等。他们通常通过在您的 phone 上通过短信向您发送 PIN 码来实现这一点,您必须在网页上输入该 PIN 码才能完成登录过程。
因此,如果有人试图登录您的用户帐户之一,它将失败,除非他们也可以访问用户 phone.
我们正在开发一个基于 REST 的 API 开发者可以从他们的移动应用程序调用,例如google 播放应用程序。
我们如何确保应用程序开发人员不会通过存储或发送用户 user/pass 来窃取用户 "EvilServer"。
如果我们不信任应用开发者,是否存在解决此问题的技术方案?
一种解决方案是在原生平台上拥有我们自己的可信身份验证应用程序,让应用程序开发人员使用它来进行身份验证吗?
OAuth 试图通过在将用户带回原始站点或应用程序之前将用户发送到提供商进行身份验证来解决此问题。这就是 "Log in with Facebook" 和 "Log in with Twitter" 系统的工作方式。
http://www.quora.com/How-does-Login-with-Facebook-option-work-on-third-party-websites 上有一个方便的图表,显示了请求是如何来回传递的。
我建议首先取消第三方应用程序使用用户凭据登录您的服务的功能,这样应用程序就没有理由首先询问用户的凭据.
我会向第三方开发人员提供 OAuth
authentication endpoint (take a look at the server-side flow),以便他们使用 您的 身份验证服务在他们的应用程序中注册和验证用户。这很有趣,因为用户在登录时必须被重定向到您的身份验证端点,因此第三方应用程序不可能随时访问他们的凭据。
但是,没有什么可以阻止恶意应用程序的开发者创建虚假表单,要求用户提供敏感信息才能登录,例如电子邮件和密码。
在这种情况下,您可以做两件事:
- 首先,教育您的用户(例如,当他们创建自己的帐户时)不要在您网站以外的任何其他网站上提供他们的凭据。这通常由银行和保险公司完成。
- 实施
Multi-Factor Authentication
为您的身份验证过程添加另一层安全性。 Google 或 Twitter 等大多数网络公司允许您要求在登录时提供您常用的凭据,但您仍然需要使用 带外 [=29] 验证登录过程=] 中等。他们通常通过在您的 phone 上通过短信向您发送 PIN 码来实现这一点,您必须在网页上输入该 PIN 码才能完成登录过程。 因此,如果有人试图登录您的用户帐户之一,它将失败,除非他们也可以访问用户 phone.