有选择地为 CakePHP 中的某些操作启用 SSL

发布于 2024-07-16 19:42:56 字数 292 浏览 2 评论 0原文

我正在尝试仅对基于 CakePHP 的网站上的某些操作启用 SSL。 我使用 requireSecure() 并重定向到相应的 blackHoleCallback() 中的 https://url 来执行此操作。

为了降低服务器负载,一旦用户完成以下操作,我想重定向回 http://whatever_url需要 SSL。

我该怎么做呢?

I'm trying to enable SSL for only certain actions on my CakePHP based website. I'm doing this using requireSecure() and redirecting to https://url in the corresponding blackHoleCallback().

To keep the server load down, I'd like to redirect back to http://whatever_url once the user is done with the action that requires SSL.

How do I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

耶耶耶 2024-07-23 19:42:56

这是我想到的一种解决方案。 我将以下代码片段添加到 AppController 中的 beforeFilter() 中:

if (!in_array($this->action, $this->Security->requireSecure) and env('HTTPS'))
    $this->_unforceSSL();

该函数定义为:

function _unforceSSL() {
    $this->redirect('http://' . $_SERVER['SERVER_NAME'] . $this->here);
}

So this is one solution I've come upon. I add the following snippet to beforeFilter() in AppController:

if (!in_array($this->action, $this->Security->requireSecure) and env('HTTPS'))
    $this->_unforceSSL();

The function is defined as:

function _unforceSSL() {
    $this->redirect('http://' . $_SERVER['SERVER_NAME'] . $this->here);
}
难以启齿的温柔 2024-07-23 19:42:56

确保对安全页面使用需要安全连接的 cookie,对非安全页面使用普通 cookie。 这样,如果有人捕获了非安全 cookie,他们将无法劫持任何敏感信息。

Make sure to use a cookie that requires a secure connection for the secure pages, and a normal cookie for non secure pages. This way, if someone captures the non secure cookie, they won't be able to hijack any sensitive information.

澉约 2024-07-23 19:42:56

我不喜欢重定向方法的是,用户仍然会转到不安全的网址,并且只有在此之后他才会被重定向。

我想要在 html->link/url 级别完成一些操作,其中根据您传递的内容返回 ssl/非 ssl 链接,类似于:
http://cakephp.1045679.n5 .nabble.com/通过-HTTPS-on-CakePHP-td1257438.html重新登录
而且还使用安全组件

稍后编辑,我做了一些更简单的事情,只是完成了我的工作,我尝试创建一个简单的示例(不要忘记在 config/core.php 或 bootstrap 中定义 MYAPP_SECURE_URL .php):
在应用程序中我创建了app_helper.php:

class AppHelper extends Helper {
    function url($url = null, $full = false) {
        if($url['action'] == 'login' && $url['controller'] == 'users') {
            return MYAPP_SECURE_URL.'/users/login';
        }
        return h(Router::url($url, $full));
    }
}

what I don't like with the redirect approach is that the user still goes to the unsecure url and only after this he is redirected.

I wanted something done at the html->link/url level where depending on what you pass a ssl/non-ssl link is returned, something similar with:
http://cakephp.1045679.n5.nabble.com/Re-Login-through-HTTPS-on-CakePHP-td1257438.html
but also using the secure component

later edit, I did something easier that just did my job done, I try to create a simple example (don't forget to define MYAPP_SECURE_URL in config/core.php or bootstrap.php):
in app I created app_helper.php:

class AppHelper extends Helper {
    function url($url = null, $full = false) {
        if($url['action'] == 'login' && $url['controller'] == 'users') {
            return MYAPP_SECURE_URL.'/users/login';
        }
        return h(Router::url($url, $full));
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文