我正在使用cakephp 2.x版本。我尝试使用SSL加密实现登录。但是,当我单击"提交"按钮时,帖子数据不会通过SSL。
尝试遵循安全组件解决方案:http://book.cakephp.org/2.0/en/core-libraries/components/security-component.html
但是,当未通过https邮政请求时,它将重定向到https获取请求。这样我就无法正确登录。
我手动将我的登录表单动作更改为
<form action="https://localhost/users/login">
我工作。但是有更好的解决方案吗?
您的解决方案确实可以正常工作,您可以通过在用户控制器中添加此ssl来添加额外的安全层:
public function beforeFilter() {
$this->Security->requireSecure('login');
}
此外,您可以通过使用blackHoleCallback
方法强制任何非SSL请求自动将其重定向到SSL ONE,例如:
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。