Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React native 将TWITTER_CONSUMER_密钥/机密放入客户端以进行oAuth1 TWITTER登录是否存在安全漏洞?_React Native_Oauth_Twitter Oauth - Fatal编程技术网

React native 将TWITTER_CONSUMER_密钥/机密放入客户端以进行oAuth1 TWITTER登录是否存在安全漏洞?

React native 将TWITTER_CONSUMER_密钥/机密放入客户端以进行oAuth1 TWITTER登录是否存在安全漏洞?,react-native,oauth,twitter-oauth,React Native,Oauth,Twitter Oauth,我发现的所有React原生Twitter登录客户端似乎都在将Twitter_CONSUMER_密钥和Twitter_CONSUMER_密钥硬编码到客户端代码中,而不是依赖服务器生成令牌和/或Twitter重定向URL 这安全吗?(例如,消费者不能使用TWITTER_consumer_键DOS API,导致应用程序速率受限吗?) 这是正确的方法吗 有更好/更安全的方法吗 根据twitter的文档,这似乎不是正确的方法: “如果您认为您的API密钥已公开,则应按照以下步骤重新生成API密钥”——

我发现的所有React原生Twitter登录客户端似乎都在将Twitter_CONSUMER_密钥和Twitter_CONSUMER_密钥硬编码到客户端代码中,而不是依赖服务器生成令牌和/或Twitter重定向URL

  • 这安全吗?(例如,消费者不能使用TWITTER_consumer_键DOS API,导致应用程序速率受限吗?)
  • 这是正确的方法吗
  • 有更好/更安全的方法吗
根据twitter的文档,这似乎不是正确的方法: “如果您认为您的API密钥已公开,则应按照以下步骤重新生成API密钥”——

指定使用者密钥/密码应硬编码的示例:

相关问题:

这是一个安全漏洞吗

您的应用程序可能会受到速率限制或标记为恶意软件/垃圾邮件等

有更好/更安全的方法吗

基本上只需要正确完成自己的站点身份验证(oauth2)和来自客户机的特定于代理的请求,然后进行验证或简化锁定的站点API,然后将其转换为Twitter API

这是为什么呢?Twitter app only auth支持OAuth2,允许安全协商握手,然后使用承载令牌发出请求。在此模式下,您可以代表应用程序发出请求,但无需登录用户。因此,不能发布推文、查看私人帐户或阅读DMs

对于用户身份验证,Twitter只支持OAuth1,应用程序和用户都经过身份验证,但使用的模型假定为明文http,因此不能共享单个令牌。每个请求都需要使用使用者密钥/密码并对请求进行签名。因此,没有一种方法可以从javascript客户端安全地执行此操作

这安全吗

绝对不是。一个糟糕的参与者可以让用户通过Twitter进行身份验证,以接收他们的令牌凭证,然后使用你的应用程序的消费者密钥/密码(可以以明文形式提供)伪装成你的应用程序来做各种讨厌的事

这是正确的方法吗

鉴于上述安全漏洞,没有

有更好/更安全的方法吗

我目前正在尝试找出如何安全地使用Twitter实现身份验证。这涉及到大量的阅读,但是如果没有你自己的后端,这似乎是不可能的。我将尝试解释原因:

  • 您的目标是接收用户的电子邮件/Twitter ID
  • 要实现(1),您需要向
    GET account/verify_credentials
    端点()发送请求
  • 要执行(2),您需要提供一个授权标头,该标头由若干项组成,包括用户的OAuth令牌以及应用程序的消费者密钥/机密。更多信息请点击此处:
  • 使用三条腿的OAuth流检索用户的OAuth令牌 此处描述:。此过程的第一步是向
    oauth/request\u令牌
    端点()发送POST请求。 此端点本身需要使用 你的应用程序的消费者密钥/机密
  • 显然,您不能执行步骤(4),因为这意味着您将在客户机中获得您的消费者机密;即使它不是硬编码的,它也必须在运行时的某个时刻保存在内存中

    一旦您拥有了自己的后端服务,一个选项就是您的客户端应用程序打开浏览器并指向此服务上的端点(我们称之为
    /auth/twitter
    ),该端点将执行上述所有步骤

    该服务还可以实现另一个端点(
    /auth/twitter/token
    ),该端点处理对回调URL的请求,回调URL是您在twitter应用程序设置中设置的。此回调URL用作同一个三条腿流的一部分。该端点将拥有随后继续并检索用户电子邮件/Twitter-ID所需的所有信息

    最后,
    /auth/twitter/token
    可以重定向到自定义URL,您的客户端应用程序需要将其作为URL方案的一部分进行处理。它可以通过参数的方式包含足够的信息,以便您的应用程序在认证后根据需要继续