Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
如何发布访问RESTAPI的jQuery代码,但如何保护它不被未经授权的使用_Jquery_Security_Rest - Fatal编程技术网

如何发布访问RESTAPI的jQuery代码,但如何保护它不被未经授权的使用

如何发布访问RESTAPI的jQuery代码,但如何保护它不被未经授权的使用,jquery,security,rest,Jquery,Security,Rest,这个问题类似于这个问题: 我想要的是针对服务器上的RESTAPI开发一个基于jQuery的查询,以检索一些数据以显示在网页上 我希望网页和jQuery的授权用户能够访问此数据,但不希望其他人能够复制该jQuery并将其放在他们的站点上以任何方式访问此数据。更清楚的是,这一切都发生在浏览器的客户端-没有任何涉及服务器端代码 如果可能的话,实现这一目标的正确策略是什么 我不希望查看网页的最终用户必须知道他们浏览器中发生的任何事情 谢谢 如果您不要求最终用户对您的站点进行任何类型的身份验证,因此您不

这个问题类似于这个问题:

我想要的是针对服务器上的RESTAPI开发一个基于jQuery的查询,以检索一些数据以显示在网页上

我希望网页和jQuery的授权用户能够访问此数据,但不希望其他人能够复制该jQuery并将其放在他们的站点上以任何方式访问此数据。更清楚的是,这一切都发生在浏览器的客户端-没有任何涉及服务器端代码

如果可能的话,实现这一目标的正确策略是什么

我不希望查看网页的最终用户必须知道他们浏览器中发生的任何事情


谢谢

如果您不要求最终用户对您的站点进行任何类型的身份验证,因此您不能将其用作身份验证方法,并且您希望您的网页能够在没有任何其他干预的情况下使用REST API,那么就没有万无一失的方法来保护REST API。如果您希望数据位于未经验证的浏览器中,则任何人都可以检索该数据

还请记住,他们可以始终运行您的网页,并从您的网页中解析数据。因此,如果使用此网页不需要身份验证,则该数据已可供一般公众使用。如果不需要身份验证,就无法真正保护它

有一些事情你可以尝试让人们更难使用你的RESTAPI,尽管没有一件是万无一失的。这些只是障碍,而不是安全

  • 您可以将过期令牌放入web页面,将其包含在web请求中,然后在RESTAPI中验证它是否为未过期令牌。这可以防止有人直接从另一个浏览器页面使用RESTAPI(他们没有合法的令牌),但不会阻止服务器首先获取主机页面,检索令牌,然后使用它访问API

  • 您可以尝试检查推荐人,只满足来自您的域的web请求。这也不是万无一失的,因为推荐人可以被欺骗,但这是一个障碍

  • 您可以使数据响应变得模糊,这样就不会立即知道如何解释返回的数据(加扰、加密等)。同样,这只是一个障碍,无法阻止坚定的黑客反向工程您自己的代码如何解释响应,但还是更多的工作妨碍了RESTAPI的临时用户

  • 许多RESTAPI所做的是要求在每次API调用中使用
    accessKey
    。您的网页将内置accessKey。任何希望使用您的API的外部开发人员(在您的许可下)都会申请accessKey,您会将其授予他们(如果您希望他们能够使用您的API)。然后,您的服务器只允许来自已批准的AccessKey的访问请求。如果发现某个accessKey被恶意使用,可以在服务器上关闭该accessKey的使用。如果有人违背您的意愿使用您自己网页中的accesskey,则您可以更改您在自己网页中放置的accesskey,并撤销以前accesskey的权限。显然,一些流氓开发人员可能会不断从您自己的网页中获取accessKey,但他们必须定期这样做才能定期使用您的API。同样,这只是一个有决心/知识渊博的开发人员可以克服的障碍,但这是对已经向公众提供的数据所能做的最好的事情


    仅供参考,这里还有另一个类似的讨论:

    您链接的文章介绍了一种连接
    oAuth
    的方法
    oAuth
    是一个开源身份验证平台,可用于验证站点上的用户。它将返回一个
    令牌
    ,您可以使用该令牌来
    确保
    用户是他们所说的人。另外,在创建的查询字符串中需要一个
    api_key=blahblahblah
    参数,这样您就有了一个安全的系统,可以通过RESTFUL api提供数据。答案很好。。。这就是我所认为的情况。。。希望有人能想出办法……:)