微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何通过iframe调用验证第三方网站

我正在和一所大学合作,需要整合我的课程 – 所以他们的学生可以在大学网站上访问它.我们将使用简单的iframe集成.

用户将在学院网站上注册,他们会将用户信息传递给我,这样我就可以开始一个会话并访问我的网站上的课程页面,通过iframe他们将在他们的网站上显示.

我的网站建立在LAMP上,我正在使用ZEND框架

这是我计划如何做的骨架结构

1)在大学网站上,作为iframe代码的一部分 – 他们将调用我的一个动作类并传递用户电子邮件

<iframe src="http://mywebsite/user/validate/email/alice@gcc.com"></iframe>

2)现在在用户控制器中 – 验证操作 – 我将基本检查用户是否不存在 – 创建新用户或使用他的电子邮件加载现有用户并启动Zend Auth实例并将用户写入存储并重定向到他的课程页面如下所示

$currentUser = $usermodel->loadUserProfileByEmail($this->_getParam('email'));
$auth = Zend_Auth::getInstance();
$storage = $auth->getStorage();         
$storage->write($currentUser);
return $this->_redirect('/user/my-courses/');

这是我到目前为止 – 显然它的工作原理

我的问题

1)这是最好的方法吗?我没有用户的密码,因为身份验证发生在大学网站上,他们不希望用户直接登录我的网站.

2)这是一个大问题.我对这个特定的大学正在进行调用的最佳认证方式感到困惑.我如何解决这个问题 – 他们是否通过加密令牌以及iframe调用 – 只有我有密钥才能解密它 – 我没有这样做 – 我不知道我是否过于复杂化了一些简单的事情.

任何建议或意见将不胜感激
谢谢

解决方法:

我可能误解了你的问题,但从我收集的内容中你需要:

– 一种验证用户身份的方法

– 能够通过他们希望在首次加载时查看的页面及其电子邮件地址.

其基础是简单的对称密钥身份验证 – 以下所有内容都是将其混搭的方法.

将您的数据放在一起(电子邮件地址,登陆页面),然后使用强密钥对其进行哈希处理.

在另一端解密,瞧瞧 – 完成了.

如果您的密码(密钥)难以猜测,此方法是安全的 – 以下是一种难以破解的方法.

认证

有几种方法可以做到这一点 – 如果你有权访问他们的服务器(或那些可以为你插入一些代码的人),那么以下方法就可以了.

创建一个执行以下操作的PHP脚本.

我已经大量过度设计,以证明一种破坏性的硬化方式的破坏 – 你可以选择自己的方式!

(伪代码)

$serverTimeStamp = timestamp;

$additionalNoise = "THEcat1sch33sy";

$time = $serverTimeStamp . "XAB"; <- needs to be a random code as delimeter.
$data =  $additionalNoise + "email@email.com";
$salt = "wh4tW0u1dB4tm4nD0?" + $serverTimeStamp;

$password然后需要使用可逆哈希进行散列(mcrypt一个好的起点)

$encrypted = mcrypt of $data and $salt ($salt is shared key);

$authenticationcode = $time . $encrypted;

这将给你一个非常强大的随机字符串,前面有一个时间戳,然后是XAB,然后是一个随机的散列字符串.

然后,这将传递给您的用户验证脚本.

<iframe src="http://yoursite/validate/COMPLETELYRANDOMSTRING"></iframe>

从那里你反转过程.

重要(修改) – 我完全忘记了一个IMPORTANT元素 – 存储在数据库中发送给您的随机字符串.这些字符串是“一次性使用” – 如果再次收到相同的字符串则是攻击.

这可以通过盐中和字符串开头的时间戳来促进 – 可以使用完全不同的字符串每天发送1000次相同的数据.

Get random string.

get time-stamp from front of random string -> using regex / index of looking for numbers and then XAB (hence the random XAB string - it is just a separator)

$timeStamp = "10200192XAB";

"wh4tW0u1dB4tm4nD0?" <-shared secret key.

$salt (secret key) = "wh4tW0u1dB4tm4nD0?" + $timeStamp;

用盐解密

你得到你的数据

"THEcat1sch33sy" (your additional noise) (which is also a fixed shared key in effect)

只需删除“THEcat1sch33sy”,然后你就可以获得你的电子邮件地址(然后你可以在百万分之一的机会中验证随机字符串实际上是否会在begninning中吐出“THEcat1sch33sy”.

Voila – 不是100%而是相信我 – 如果我想进入你的服务器 – 我不会这样尝试!

通过页面

Simply add it to the $data - so you would pass $email + "seperator" + $coursepage.

希望这有帮助(并且很清楚)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐