我正在寻求利用 iframe 在客户网站中嵌入一些 html,这些网站将使用简单的 GET
请求列出我的数据库中的一些信息,如下所示:
// customer would copy/paste this code onto their site
// value of key would be unique key for that customer
<iframe src='http://mydomain.php/api?key=1234j1lj1hj124kh' ></iframe>
现在我希望能够验证该请求是否来自拥有 key 的客户,而不仅仅是将该代码复制/粘贴到其页面上的任何人。
我做了一些研究,发现 $_SERVER['HTTP_REFERRER']
可以 给我这些信息,但大多数评论褒贬不一,认为它并不总是可靠的(并且我遇到的大多数问题都是几年前的问题)。
问题
1.) 这种使用 iframe/GET 请求的方法是实现此功能的标准方法吗?
2.)是否有标准、安全且可靠的方法来验证 GET 请求的来源?
最佳答案
不幸的是,这不可能以安全的方式实现。
回答您的问题:事实上,这本身并不是一个标准功能。我的意思是,没有标准的安全方法允许仅通过允许的网站的 iframe 加载内容。
此通信包含三个参与方:
1) 您的网站
2) 在 iframe 中加载您网站数据的客户网站
3) 最终用户访问客户网站
当最终用户访问客户网站时,他将通过 iframe 向您的网站执行 GET 请求。就此而言,上述第二方(客户网站)不涉及。在这种情况下,您的网站没有可靠的方法来了解此请求是否通过 iframe 发出。唯一有利于第二方在这里做的就是将 HTTP_REFERER header 添加到最终用户的请求中。但这个 header 不可信。
例如,如果我想滥用此功能并在我的网站上显示该内容,我可以在我的应用程序上创建一个代理页面,在其中对您的应用程序执行后端调用(添加有效的 HTTP_REFERER header )并显示结果返回。
关于php - 嵌入式 iframe - 验证 GET 请求的来源/来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22029412/