如何保护控制器中的codeigniter功能?

时间:2014-04-07 13:03:46

标签: php codeigniter

我目前正在开发codeigniter中的一些东西,这是一个我需要更多安全性的项目。 (我买了ssl证书)

我看到如果我创建了一个函数,让我们说一下当我提交帐户详细信息来注册帐户时调用的函数,我可以轻松地直接调用它。

首先,它看起来很糟糕。我想知道是否有任何安全问题我应该担心。

我在互联网上发现阻止直接访问的方法是将其放在每个函数中:

$THE_REFER = strval(isset($_SERVER['HTTP_REFERER']));
if (!$THE_REFER)
redirect('home'); 

但看起来并不专业。

谢谢

2 个答案:

答案 0 :(得分:2)

您在寻找公共与私人功能吗?

<强> HTML

<form method="POST" action="/validate/register">
    <!-- username, password, blah blah blah -->
</form>

PHP(validate.php)

class Validate extends CI_Controller {

    // accessible in URL
    public function register()
    {
        if($this->check_credentials())
        {
            // success message
        }
        else
        {
            // error message
        }
    }

    // accessible only in this class/controller
    private function verify_info()
    {
        // logic to check if info is good
        // work in CSRF token protection
        // return true or false
    }
}

答案 1 :(得分:1)

HTTP Referrer标头包含客户端想要包含的内容。

您可以将(服务器端)会话的时间戳存储到记录客户端已加载帐户详细信息表单,然后在收到帐户时验证此记录 。如果用户访问其他页面以及它将保持有效多长时间,是否清除此记录取决于您。

没有一个简单的解决方案,因为您验证客户端的能力有限。您必须平衡您在安全方面投入的精力与您寻求保护的数据(和信任)的价值以及您所面临的程度。