Web services SaaS Webservice浏览器集成:如何保护客户的ApiKey并让他们在网页中嵌入请求?

Web services SaaS Webservice浏览器集成:如何保护客户的ApiKey并让他们在网页中嵌入请求?,web-services,security,saas,api-key,Web Services,Security,Saas,Api Key,我运行一个SaaS,它有一个用于付费的webservice端点,可以返回图像 端点的形式如下:SaaSWebsite]/api/[ApiKey]/[RequestDetails] 我的一些客户希望将服务直接集成到他们网站的HTML中,因此当他们的用户访问页面时,用户的浏览器直接访问我的webservice端点 例如,我客户的网页可能有以下内容: <html> <body> Hello User, your important pic is: <img src="h

我运行一个SaaS,它有一个用于付费的webservice端点,可以返回图像

端点的形式如下:SaaSWebsite]/api/[ApiKey]/[RequestDetails]

我的一些客户希望将服务直接集成到他们网站的HTML中,因此当他们的用户访问页面时,用户的浏览器直接访问我的webservice端点

例如,我客户的网页可能有以下内容:

<html>
<body>
Hello User, your important pic is: 
<img src="http://mysaaswebsite.com/api/superSecretApiKey/user-request-details">
<body>
</html>

用户您好,您的重要图片是:
一个邪恶的用户可以提取
superSecretApiKey
并使用我的SaaS,而我的真正客户将因其使用而被收取费用

在不向最终用户透露客户的ApiKey(用于计费)的情况下,我如何允许这样做?


我曾考虑使用
referer
HTTP头来限制ApiKey对我客户网站的访问,但我认为这仍然可以通过使用curl或编写自己请求代码的恶意用户进行欺骗。

以下是我的解决方案:一个包含白名单RequestDetails的“公钥”。

在我的情况下,
requestDetails
包含一个URL,因此我会让用户白名单域,他们希望他们的
公钥能够访问