编辑:@Wolffc的答案是完全正确的--我有一个错误的返回值,所以问题在椅子和屏幕之间。
TYPO3 10.4.8
我正在用在邮件中生成一个链接来验证对课程的订阅。
不能缓存它,所以我可以检查链接是否已经被点击,但是链接中添加了一个cHash。
<f:link.action
action="validate"
pluginName="Coursevalidation"
extensionName="myextension"
controller="Course"
pageUid="1"
absolute="1"
pageType="1921"
noCache="1"
noCacheHash="1"
arguments="{validationHash: subscription.validationHash, course:course, subscription:subscription}"
>Link</f:link.action>文档中说不应该使用noCache和noCacheHash (“您不应该需要这个”),如果添加它也没有什么区别。
PageType是秘密的,1921.config.no_cache = 1
生成的链接导致(换行以提高可读性):
https://mydomain.ddev.site/email-validation
?no_cache=1
&tx_myextension_coursevalidation%5Baction%5D=validate
&tx_myextension_coursevalidation%5Bcontroller%5D=Course
&tx_myextension_coursevalidation%5Bcourse%5D=3
&tx_myextension_coursevalidation%5Bsubscription%5D=30
&tx_myextension_coursevalidation%5BvalidationHash%5D=40e83[...thats long ;)...]0d65c
&cHash=5d7688ac4f04a2d31a98f2cffb792e51如您所见,有一个cHash。首先,链接上的klick触发了我的机制来检查所有内容并将订阅设置为有效,然后重定向到“成功”-Page,这正是它应该做的。
第二种方法也打开了成功的页面,但是应该有“已经验证”的信息。当我在没有cHash的情况下调用链接时,该页面将被打开。
为什么添加了一个cHash,我如何删除它?
谢谢:)
发布于 2020-09-26 20:09:57
必须将此操作定义为在ext_localconf.php中未执行的操作。
TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin
如果插件操作是非缓存的,typo3将正确地处理这个问题。
cHash是对请求参数的校验和,主要用于防止缓存膨胀攻击。如果攻击者生成随机参数集。如果cHash无效。结果将不会被缓存。但事实并非如此。如果cHash是有效的,那么可能仍然是页面的各个部分未被释放。(甚至整页)
https://stackoverflow.com/questions/64081163
复制相似问题