【问题标题】:passing parameters securely in Zend在 Zend 中安全地传递参数
【发布时间】:2012-03-13 21:44:03
【问题描述】:

我在服务控制器,登录操作 (/service/login) 中,我想将姓名、电子邮件和公司传递给配置文件控制器,注册操作 (/profile/register)。

目前我正在这样做

$this->_redirect('/profile/register/?name='.$name.'&emailid='.$email.'&companyid='.$company);

但我想将此信息传递给 /profile/register 以使用户无法在 url 中看到这些信息。

我尝试过像这样使用 $this->_forward

$params = array(
name=>$name,
emailid=>$email,
companyid=>$company
);
$this->_forward('register','profile',null,$params);

但这不起作用。有没有其他方法可以做到这一点?

【问题讨论】:

  • 为什么转发不工作?您如何尝试取回您的参数?

标签: php security zend-framework url redirect


【解决方案1】:

为了安全地传递参数,您应该将数据存储在会话中,或者如果您不能使用会话,则存储在数据库中。

您可以使用Zend_Session 临时存储数据,直到您可以检索的下一个页面视图,它会被删除(或者您可以让它保留)。

$s = new Zend_Session_Namespace('registrationData');
$s->setExpirationHops(1);  // expire the namespace after 1 page view
$s->name = $name;
$s->email = $email;
$s->companyId = $company;

// ...
return $this->_redirect('/profile/register);

然后在profile/register:

$s = new Zend_Session_Namespace('registrationData');
$name = $s->name;
$email = $s->email;
$companyId = $s->companyId;
// when this request terminates, the data will be deleted if you leave
// setExpirationHops as 1.

另见Zend_Session - namespace expiration

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2021-12-15
    • 2012-01-29
    • 2020-09-01
    相关资源
    最近更新 更多