如何通过ssl中的表单提交为cakephp加密发布数据

时间:2012-10-31 06:13:34

标签: cakephp cakephp-2.1

我正在使用cakephp 2.X版本。我尝试使用ssl加密实现登录。但是当我点击提交按钮时,帖子数据不会通过ssl。

尝试遵循安全组件解决方案: http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html

但是,如果发布请求不是通过HTTPS,则会重定向到https get请求。这样我就无法正常登录。

我手动将登录表单操作更改为

<form action="https://localhost/users/login">
我工作。但有没有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

您的解决方案确实有效,您可以通过在用户控制器中添加SSL来使用安全组件SSL来添加额外的安全层:

public function beforeFilter() {
    $this->Security->requireSecure('login');
}

此外,您可以使用blackHoleCallback方法强制任何非SSL请求自动重定向到SSL请求,如下所示:

public function beforeFilter() {
    $this->Security->blackHoleCallback = 'forceSSL';
    $this->Security->requireSecure();
}

public function forceSSL() {
    $this->redirect('https://' . env('SERVER_NAME') . $this->here);
}

如果SSL对整个应用程序很重要(例如,如果您正在处理敏感数据),最好的解决方案是让您的Web服务器(Apache / nginx /您使用的任何内容)在所有请求上强制使用SSL并重定向任何非SSL的替代SSL。