[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[CakePHP2.x]使用安全组件时出现问题[黑洞]

这是开发团队的Hase。

当我使用CakePHP的Security组件实现登录功能时,
出现了这样的神秘错误。

请求已被黑洞

黑洞?这是什么? 。
当您提交表单后单击浏览器上的“返回”然后再次提交时,尤其会发生这种情况。 。 。

我不知道这个错误是什么,所以
我决定研究如何解决它。

允许 Post 和 Ajax

由于几乎所有错误都发生在表单屏幕上,因此
我更改了 beforeFilter 以允许 Post 和 Ajax。

应用程序/控制器/AppController.php

public function beforeFilter() { $this->Security->validatePost = false; $this->Security->csrfCheck = false ... // ~一些处理~ }

我检查了一下,希望不再出现该错误
,但还是出现了同样的错误。
调查再次开始。

修复了覆盖问题

AppController.php的 beforeFilter 中允许 Post 和 Ajax
控制器会覆盖 beforeFilter 并且
不再允许通信。

因此,我修复了导致黑洞错误的控制器。
parent::beforeFilter();到 beforefilter

应用程序/控制器/UserController.php

public function beforeFilter() {parent::beforeFilter(); // ~一些处理~ }

我以为错误已经消失了,
所以我检查了一下,但同样的错误又出现了。 。

处理黑洞回调

我已经走到这一步了,但是官方网站有关于如何处理它的说明。 。

当受到安全组件限制时,默认情况下,请求将作为格式错误的请求被丢弃,并显示 400 错误。
您可以通过将控制器中的回调函数设置为 $this->Security->blackHoleCallback 来更改此行为。

也就是说,提交表单后点击浏览器的“返回”,再次提交就是一个
无效请求,也就是说
返回了400错误,出现了黑屏错误。

我应该从一开始就看官方网站。 。

因此,对发生黑洞错误的Controller的beforefilter进行如下修改。

公共函数 beforeFilter() { Parent::beforeFilter(); $this->Security->blackHoleCallback = 'blackhole'; $this->Security->csrfCheck = false; ~某种处理~ } // 穿过黑洞 public function blackhole($type) { }

现在我不再遇到黑洞错误了! !
我放心了。 。

参考

https://book.cakephp.org/2.0/ja/core-libraries/components/security-component.html
http://www.aipacommander.com/entry/2015/04/27/180000

如果您觉得这篇文章有帮助,请点赞!
2
加载中...
2 票,平均:1.00 / 12
6,857
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

长谷达也

应届毕业生加入Beyond Co., Ltd.。

我们开发网络系统(开发在浏览器上运行的服务和系统,例如网络服务、数字内容和业务管理系统)和游戏API(开发与应用程序游戏通信的程序)。

我们还为 Shopify 开发私人/自定义应用程序。

原本在大阪事务所工作,2019年调到横滨事务所。
我的爱好是棒球/卡拉OK/动漫