codeigniter验证回调安全吗?

问题描述 投票:1回答:3

好的,所以我注意到codeigniter的“form_validation”库允许使用回调,这很好但是它们是一个条件,该方法必须被声明为public。

每个使用过codeigniter的人都知道控制器中的公共方法可以从外部访问,我甚至试图查看codeigniter是否有一些代码来阻止你调用回调方法,但事实并非如此。

这有多大的安全风险,因为我觉得如此开放并不安全。

谢谢,丹

php codeigniter security
3个回答
0
投票

我个人认为这不安全。我总是要做的就是让表单也发送一些额外的值,例如你可以验证的CSRF令牌,以及当你进入主验证函数时创建的另一个唯一值,你可以在回调函数中验证它。


0
投票

您可以随时使用MY_Form_validation.php库并在偏执狂后使用自定义验证方法。

<?php if ( ! defined( 'BASEPATH' ) ) exit( 'Not your cup of tea.' );

class MY_Form_validation extends CI_Form_validation
{
    public function __construct()
    {
        parent::__construct();
    }

    public function noone_can_see($str)
    {
        if ( (string)$str !== (string)strrev($str) )
        {
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }
}

在控制器中:

$this->form_validation->set_rules('username', 'Username', 'trim|required|noone_can_see', ['noone_can_see' => 'We still can not read the %s identically from both ways.']);

加载库未更改。仍然可以在autoload.php与库数组的'form_validation'值。


-1
投票

我有同样的想法,我尝试成功地从Web浏览器的HTTP请求调用回调函数。 我非常喜欢它,特别是因为我的回调使用输入数据执行模型查询。你可以做的一件事是使用callable代替或阻止访问回调函数: How to disable direct access to callback functions?

© www.soinside.com 2019 - 2024. All rights reserved.