Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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
如何在仅javascript的web应用程序上保证OAuth使用者密钥的安全?_Javascript_Oauth_Tumblr_Github Pages - Fatal编程技术网

如何在仅javascript的web应用程序上保证OAuth使用者密钥的安全?

如何在仅javascript的web应用程序上保证OAuth使用者密钥的安全?,javascript,oauth,tumblr,github-pages,Javascript,Oauth,Tumblr,Github Pages,我正在尝试为托管在GitHub页面上的Tumblr编写一个web应用程序,它可以显示用户的喜好。由于几乎没有web开发经验,我最初访问Tumblr API的方法是这样的: var host_name = "some-username" var api_key = "XXX" $.ajax({ type: "GET",

我正在尝试为托管在GitHub页面上的Tumblr编写一个web应用程序,它可以显示用户的喜好。由于几乎没有web开发经验,我最初访问Tumblr API的方法是这样的:

var host_name = "some-username"
var api_key = "XXX"
$.ajax({                                                                
    type: "GET",                                                        
    url: "https://api.tumblr.com/v2/blog/" + host_name + ".tumblr.com/likes?api_key=" + api_key,                                                       
    dataType: "jsonp",                                                                 
    success: function(results) {
        ...
    }
});

这很好,因为根据TumblrAPI,我只需要消费者密钥就可以得到喜欢的东西。然而,我突然想到,在我的脚本中将使用者密钥作为变量存储在可公开访问的位置可能不是一个好主意。不幸的是,由于GitHub页面只承载静态站点,所以我无法将使用者密钥放在网站服务器上,并在每次调用API时访问它以确保其安全(我甚至不知道如何做到这一点)。如果没有专用服务器,如何保证密钥的安全?

如果您使用前端解决方案访问API,则无法阻止API密钥的公开。在我的一个应用程序中,我有一个单独的文件,其中包含包括api键在内的全局变量,然后我通过变量名进行调用,例如:site.apiKey`。那么,我唯一能做的另一件事就是解开钥匙,这样它就不那么容易被人眼解读了。您可以使用一些转换来降低字符串的可读性,但实际的网络调用将始终公开密钥。@lharby您的注释就是答案。为什么不把它作为答案发布?@DavidJacquel它不提供任何代码,它告诉OP在前端隐藏api密钥没有解决方案。@lharby你是对的。我也这么做。但是“OP”是什么意思?@DavidJacquel Original Poster如果您使用前端解决方案访问API,那么您无法阻止API密钥的公开。在我的一个应用程序中,我有一个单独的文件,其中包含包括api键在内的全局变量,然后我通过变量名进行调用,例如:site.apiKey`。那么,我唯一能做的另一件事就是解开钥匙,这样它就不那么容易被人眼解读了。您可以使用一些转换来降低字符串的可读性,但实际的网络调用将始终公开密钥。@lharby您的注释就是答案。为什么不把它作为答案发布?@DavidJacquel它不提供任何代码,它告诉OP在前端隐藏api密钥没有解决方案。@lharby你是对的。我也这么做。“OP”你听到了什么?@DavidJacquel原创海报