我正在与一所大学合作,需要整合我的课程-这样他们的学生才能在大学网站上访问它。我们将进行简单的iframe集成。
用户将要在大学网站上注册,他们会将用户信息传递给我,这样我就可以开始课程并访问我网站上的课程页面,这些页面将通过iframe显示在他们的网站上。
我的网站建立在LAMP上,我正在使用ZEND框架
这是我打算如何做的基本结构
1)在大学网站上,作为iframe代码的一部分-他们将调用我的一个动作课程并通过用户电子邮件
<iframe src="http://mywebsite/user/validate/email/[email protected]"></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调用一起传递-只有我有解密它的密钥-我还没有这样做-我不知道我是否在简化一些简单的事情。
任何意见或建议将不胜感激谢谢
我可能误解了您的问题,但从我的收集中您需要:
-验证用户身份的方法
-能够跳过他们希望在首次加载时查看的页面及其电子邮件地址的功能。
其基础只是对称密钥身份验证-接下来是将其混搭的方法。
将您的数据放在一起(电子邮件地址,使用Page登陆),然后使用强键对数据进行哈希处理。
解密另一端,瞧-完成。
如果您的密码(密钥)难以猜测,则此方法是安全的-以下是一种难以破解的方法。
认证
有两种方法可以执行此操作-如果您有权访问他们的服务器(或那里的人可以为您插入一些代码),则可以使用以下方法。
创建一个执行以下操作的php脚本。
我已经过度设计了这种方法,以显示使散列字符串难以破解的方式的负担-您可以选择自己的方式!
(伪代码)
$serverTimeStamp = timestamp;
$additionalNoise = "THEcat1sch33sy";
$time = $serverTimeStamp . "XAB"; <- needs to be a random code as delimeter.
$data = $additionalNoise + "[email protected]";
$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>
从那里您可以逆转该过程。
重要(修订)-我完全忘记了一个重要元素-将发送给您的随机字符串存储在数据库中。这些字符串是“一次性使用”的-如果您再次收到相同的字符串,则是一次攻击。
字符串中的时间戳和字符串的开头简化了所有操作-可以每天使用完全不同的字符串发送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”,您就会拥有您的电子邮件地址(然后,您可以在一百万次机会中以1的概率验证该电子邮件地址,即随机字符串实际上在开始时会吐出“ THEcat1sch33sy”。
瞧-不是100%,但请相信我-如果我尝试进入您的服务器-我不会尝试这种方式!
通过页面
Simply add it to the $data - so you would pass $email + "seperator" + $coursepage.
希望这会有所帮助(并且很清楚)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句