Php codeigniter验证回调是否安全?

Php codeigniter验证回调是否安全?,php,codeigniter,security,Php,Codeigniter,Security,好的,所以我注意到codeigniter的“form_validation”库允许使用回调,这很好,但它们是一个条件,方法必须声明为公共的 每个使用过codeigniter的人都会知道,控制器中的公共方法可以从外部世界访问,我甚至试图看看codeigniter是否有一些代码阻止您调用回调方法,但它没有 这有多大的安全风险,因为我觉得这么开放不安全 谢谢, 丹就我个人而言,我不认为这不安全。我通常会做的就是让表单也发送一些额外的值,比如CSRF令牌,您可以验证,以及在进入主验证函数时创建的另一个唯

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

每个使用过codeigniter的人都会知道,控制器中的公共方法可以从外部世界访问,我甚至试图看看codeigniter是否有一些代码阻止您调用回调方法,但它没有

这有多大的安全风险,因为我觉得这么开放不安全

谢谢,

就我个人而言,我不认为这不安全。我通常会做的就是让表单也发送一些额外的值,比如CSRF令牌,您可以验证,以及在进入主验证函数时创建的另一个唯一值,这两个值都可以在回调函数中进行验证。

您始终可以创建
MY\u Form\u validation.php
库,并设置自定义验证方法,以便在paranoia之后使用

<?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;
        }
    }
}

加载库未更改。仍然可以在
autoload.php
中使用库数组的
'form\u validation'
值。

我有同样的想法,我尝试从web浏览器的HTTP请求中成功调用回调函数。
我已经找到了非常好的用法,特别是因为我的回调使用输入数据执行模型查询。 您可以做的一件事是改用callable或阻止对回调函数的访问:

使用Callable。问题解决了,是的,我同意你们的观点——在控制器中没有公共方法——而且我更喜欢瘦控制器,所以我把所有的胖表单验证代码放在一个模型中。
$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.']);