在客户端应用程序中保护Azure功能键

时间:2020-05-16 14:46:54

标签: jquery azure security azure-functions azure-cdn

我一直在试验Azure Functions。

我想通过jQuery从静态网站调用HTTP触发函数。我使用Verizon CDN在Azure Blob存储中设置了静态网站。一切正常。

但是,我只想限制对我的网站的访问。 我想通过AuthorizationLevel'Function'保护功能-这意味着我需要将API密钥与请求一起传递。 但是,这意味着在静态网页上具有该密钥,这意味着查看该页面源代码的任何人都可以获取该调用并调用该函数。

有没有办法可以避免这种情况? 我曾考虑过能够向CDN添加HTTPHeader吗? 我还考虑过可以在“功能”方面请求某些内容,以仅允许某些网站提出请求。

我对此有些迷惑,也许不能简单地做到这一点。

2 个答案:

答案 0 :(得分:1)

最好使用最佳实践,应该使用Verizon Premium CDN,以便能够使用路由规则,然后使用Azure API Management从API中抽象客户端,并有一种方法通过应用限制规则来保护它们,请求限制,缓存等。

您可以配置的规则将URL Rewrite用于对功能(例如/ api)的请求,而Bypass Cache规则用于与不想缓存的动态数据相关的任何请求。 / p>

请访问at this article,查看显示该图并说明该过程的Microsoft文档。

答案 1 :(得分:0)

从安全的角度来看,根本没有办法(至少我知道)对像浏览器应用程序这样的公共客户端进行身份验证。 由于必须在未经身份验证的情况下允许来自用户计算机的请求,因此必须将端点保持打开状态。 无论如何,使用功能键都是毫无意义的。

您可以使用CORS(跨域资源共享)将请求限制为仅来自您的网站。 这不会阻止某人发出请求,但是会告诉浏览器不要允许来自错误来源的请求。 仍然有人可以从后端应用程序向您的函数发出请求(因为在那里CORS被忽略了),但这总比没有好。