javascript - 通过 iframe 验证正在使用我的服务的网站

标签 javascript authentication iframe

我向不同的网站提供服务。为了让网站使用该服务,他们实现了一个 JavaScript,该 JavaScript 可以触发一个带有 iframe 的灯箱。

问题是我不希望任何网站能够使用该服务/iframe。有什么方法可以使用 iframe 对网站进行身份验证吗? 在我看来,随机网站可以使用服务/iframe 从网站获取 javascript,并在自己的网站上实现它。

验证 iframe 内的实际用户没有问题,会有一个登录表单和一个注册表单。我只想识别和验证使用 iframe 的网站。

任何建议都值得采纳!

最佳答案

您可以在 JavaScript 中检查 document.referrer,如果引用域不在您提供的白名单内(或者引用者为空),则根本不显示内容。

但我们都知道引荐来源网址是多么不可靠,即使在错误的条件下它也可能会排除用户。

另一种方法仅适用于嵌入 iframe 的网站具有服务器端脚本,因此可以计算某种哈希值 - 例如当前日期和 secret 关键字的哈希值 - 并将其作为 iframe URL 中的 GET 参数传递。在您的脚本中,您检查给定值是否与您使用相同数据创建的哈希相同 - 并根据该值显示内容。

如果您的服务器和其他站点的时区设置不同,则使用当前日期可能会出现问题,并且当用户在午夜左右调用该页面时,它也可能会中断。为了防止此类问题,您可以让远程站点也包含用于创建哈希的 unix 时间戳值作为 GET 参数 - 然后您可以检查该时间戳是否太旧,并使用该确切值创建哈希。 (然后其他网站可能会尝试复制参数并在其页面上使用它们,但它只适用于很短的时间窗口。)

关于javascript - 通过 iframe 验证正在使用我的服务的网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16686877/

相关文章:

javascript - 包含具有相同 URL 的另一个 IFRAME 的 IFRAME 是否有限制?

javascript - Angularjs 一次绑定(bind)被调用两次

javascript - 如何跟踪 Angular 中一个组件中另一个组件中发出的值的变化

javascript - 滚动到幻灯片顶部切换

javascript - 使用 jQuery 删除动态插入的 html

android - Facebook 登录关闭我的 Activity

javascript - thinkster.IO 教程第 6 章 - 'Auth' 未定义

authentication - Grails:如何获取当前登录用户的用户名,这需要什么导入?

javascript - QUnit 异步测试停止功能不起作用

reactjs - iframe src 属性在我的 React 应用程序中更改为 data-src