php - 嵌入式 iframe - 验证 GET 请求的来源/来源

标签 php iframe get embed restful-authentication

我正在寻求利用 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/

相关文章:

php - 在 Woocommerce 单一产品页面的简短描述下显示自定义字段

php - MYSQL 按日期排序(字符串)

php - 无法打开流 : HTTP request failed! HTTP/1.0 400 错误请求

php - 导航子菜单项未出现在 iframe 中

.htaccess - 限制通过其父框架/域以外的任何内容访问 iframed 域

javascript - iframe跨域获取值

http - HTTPS 的 AT 命令

node.js - 如何使用express/Node.js 重定向 URL,同时维护所有 GET 参数

javascript - 为什么轨道名称中的点会混淆通过 Spotify Web API 进行的搜索?

php - 在 div 标签中从 MySQL 接收数据