大佬教程收集整理的这篇文章主要介绍了php-如何在CodeIgniter中非表单的链接中添加和验证令牌(针对CSRF等)?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道如何在CodeIgniter的表单中启用CSRF,但是我不确定如何在CodeIgniter经典链接中实现此功能(例如,在管理区域中添加/删除私人消息,帖子等)
现在我正在使用这样的东西:
视图
<?@L_262_4@ echo anchor('account/delete_private_@R_674_8798@ge/'.$obj->pmID, 'delete mesage', array('onclick' => 'return confirm(\'Do you really want to delete this private @R_674_8798@ge?\');', 'class' => 'delete-@R_674_8798@ge-button')); ?>
控制器
function delete_private_@R_674_8798@ge($pmID = '')
{
$deleted_pm = $this->account_R_184_11845@odel->delete_pm($pmID);
if($deleted_pm)
{
$this->session->set_flashdata('status', 'PM was deleted successfully');
}
else
{
$this->session->set_flashdata('status', 'Error');
}
redirect('account/private_@R_674_8798@ges');
}
模型
function delete_pm($pmID)
{
$return = 0;
if(!empty($pmID))
{
$this->db->where('pmID', $pmID);
$result = $this->db->delete('private_@R_674_8798@ges');
}
return $result;
}
问题是如何将令牌添加到链接和用户会话并进行验证等.我不知道如何实现此功能以使其正常工作.
值dfdf6e7re67a6e87r6e87r69876bn3也在当前用户的会话中,并在控制器中进行验证.但是,我不知道该怎么做.因此,感谢您的帮助.
解决方法:
您是正确的-只需将CSRF令牌作为链接的一部分传递即可.下面的示例应该有所帮助(但我尚未对其进行测试)
function delete_private_@R_674_8798@ge($pmID = '', $token = null)
{
// check supplied token is valid
if ( ! ($this->_check_token($token)))
{
// Not valid
$this->session->set_flashdata('status', 'Error');
redirect('account/private_@R_674_8798@ges');
}
if($this->account_R_184_11845@odel->delete_pm($pmID))
{
$this->session->set_flashdata('status', 'PM was deleted successfully');
}
else
{
$this->session->set_flashdata('status', 'Error');
}
redirect('account/private_@R_674_8798@ges');
}
function _check_token ($token)
{
return ($token === $_COOKIE[$this->csrf_cookie_name]);
}
$return = 0;
应该
$result = 0;
以上是大佬教程为你收集整理的php-如何在CodeIgniter中非表单的链接中添加和验证令牌(针对CSRF等)?全部内容,希望文章能够帮你解决php-如何在CodeIgniter中非表单的链接中添加和验证令牌(针对CSRF等)?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。