这个问题和这个问题相似:
开发API-如何使其安全?
我想要的是针对服务器上的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。同样,这只是一个有决心/知识渊博的开发人员可以克服的障碍,但这是对已经向公众提供的数据所能做的最好的事情。
仅供参考,这里还有另一个类似的讨论:如何限制JSON访问?
你能想出其他更好的办法吗?
只要我的antMatcher上有.permitall(),这就可以很好地工作,但是当我试图保护它以便只有管理员才能进行该调用时(DB中的管理员角色是ROLE_ADMIN),它会返回401未经授权的访问,并且没有消息。我试过了 .hasRole(“admin”) .hasRole(“role_admin”) .hasAuthority(“admin”) .hasAuthority(“role_adm
问题内容: 我正在用Python开发一款软件,该软件将分发给雇主的客户。我的雇主想通过限时许可文件限制软件的使用。 如果我们分发文件甚至文件,将很容易(反编译和)删除检查许可证文件的代码。 另一个方面是,我的雇主不希望我们的客户阅读该代码,因为担心该代码可能被盗或至少是“新颖的主意”。 有解决这个问题的好方法吗?最好使用现成的解决方案。 该软件将在Linux系统上运行(因此,我认为py2exe不会
问题内容: 实际上,我是一名PHP开发人员。我想出售我的PHP产品。 因此,我想保护PHP中的一些主要源代码。但是在PHP中这是不可能的。 我也知道Golang 因此,我想在golang代码中构建秘密算法并编译为二进制。 最后,我想用PHP代码和&二进制程序保护我的PHP主要算法。 我的疑问是: 当我将golang源代码编译为二进制文件时。是否可以从二进制文件中获取golang源代码? 问题答案:
我的疑问是如何通过rest客户端以指定的角色访问这个服务。
我遇到了使用文档签名 API 的第一个障碍,需要一些帮助。 我将docusignrestapi集合导入到Postman中。我设置了iKey、iSec、encodedKeys和codeFromUrl变量。 当尝试发送'01-授权代码授予访问令牌'post API时,我每次都得到以下响应。 我尝试从Postman中删除所有内容,包括环境,并从DocuSign中删除该应用程序,然后重新开始,以便我的所有