[英]CodeIgniter , Csrf token
我有麻烦
查看
<form method="post" action="test/csrf">
<input type="hidden" name="<?=$this->security->get_csrf_token_name();?>" value="<?=$this->security->get_csrf_hash();?>">
控制器
echo $this->input->post($this->security->get_csrf_token_name());
我无法显示令牌代码
访问控制器中的 Csrf Token
在控制器中,您可以获得 csrf 的名称和值,如下所示
echo $this->security->get_csrf_token_name(); // for the name
echo $this->security->get_csrf_hash(); // for the value
在配置文件中启用 CSRF
$config['csrf_protection'] = TRUE;
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
1.使用表单助手使用CSRF令牌
我们有两种添加 CSRF 令牌的方法; 如果我们想用 CodeIgniter 表单助手类更新您的表单,那么 CSRF 令牌将自动添加,或者如果您想在自定义表单中进行调整,那么我们需要添加自定义隐藏输入名称及其值。
当我们使用表单助手类时:
<?php echo form_open(base_url( 'user/login' ), array( 'id' => 'login', 'class' => 'login' ));?>
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" name="submit" value="Submit" />
<?php echo form_close();?>
使用表单助手类将自动将输入添加到表单中,并带有随机令牌值以防止 CSRF。
2.当我们使用自定义表单时:
我们需要添加一个输入字段以防止我们使用 CSRF 自定义表单。
$csrf = array(
'name' => $this->security->get_csrf_token_name(),
'hash' => $this->security->get_csrf_hash()
);
<input type="hidden" name="<?=$csrf['name'];?>" value="<?=$csrf['hash'];?>" />
如果您使用表单助手,则 form_open() 将自动在您的表单中插入一个隐藏的 csrf 字段。 如果没有,
然后你可以使用get_csrf_token_name()
和get_csrf_hash()
http://www.codeigniter.com/user_guide/libraries/security.html
http://www.sks.com.np/secure-your-codeigniter-application-using-csrf-token/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.