Typo3 如何在get表格上处理裂缝?
我正在使用TYPO3 9.5并使用extbase构建搜索扩展,但在cHash方面存在一些问题。Typo3 如何在get表格上处理裂缝?,typo3,extbase,typo3-9.x,Typo3,Extbase,Typo3 9.x,我正在使用TYPO3 9.5并使用extbase构建搜索扩展,但在cHash方面存在一些问题。 我用f:form在fluid中构建搜索表单,并使用GET作为方法。如果我使用POST,没有问题。 我的搜索操作配置为不可缓存操作。我还尝试为我的扩展设置打字脚本configrequireCHashArgumentForActionArguments=0。 但每次我尝试搜索时,都会得到404。即使我让表单viewhelper生成一个裂缝。唯一有效的解决方法是在LocalConfiguration中禁用p
我用f:form在fluid中构建搜索表单,并使用GET作为方法。如果我使用POST,没有问题。
我的搜索操作配置为不可缓存操作。我还尝试为我的扩展设置打字脚本config
requireCHashArgumentForActionArguments=0
。
但每次我尝试搜索时,都会得到404。即使我让表单viewhelper生成一个裂缝。唯一有效的解决方法是在LocalConfiguration中禁用pageNotFoundOnCHashError。但我觉得这不对。如果我创建一个带有固定搜索词的链接,该操作也会起作用 所以我想到了一些问题
- 为什么需要一个不可缓存的操作的缺口
- 裂缝怎么能在表格上工作呢?这是一个表单的概念,用户可以修改值,据我所知,这是一个裂缝的概念来防止这种情况
<f:form
id="search-form"
class="press-search-widget"
additionalAttributes="{'role': 'search'}"
method="get"
action="search"
extensionName="MySearch"
pluginName="Mysearch"
controller="Search"
section="search-form" >
<f:form.textfield
id="pressfilter-search"
class="form-control"
type="text"
name="searchTerms[searchTerm]"
value="{parameters.searchTerm}"
placeholder=""
/>
</f:form>
为什么需要为不可缓存的操作设置缺口
我真的不知道。也许他们只是忘记了,或者没有人真正使用GET表单
裂缝怎么能在表格上工作呢?这是一个表单的概念,用户可以修改值,据我所知,这是一个裂缝的概念来防止这种情况
URL参数包含在chash中。因此,除了动作/控制器参数外,通过POST发送不应使用chash
您必须自己构建表单并手动或使用Javascript进行验证。索引搜索使用POST,更改隐藏表单字段中的页面/指针,并再次提交表单进行分页。cHash是一种安全功能。它可以防止参数的复制。而服务器作为额外的安全层,它还可以防止缓存膨胀攻击。 其中,机器人可以生成带有新参数和类型的链接3,然后缓存每个此类页面的结果,并快速增长数据库中的缓存表 但是,可以使用安装工具从计算中排除某些参数:
[FE][cHashExcludedParameters]
设置
排除的参数也不会影响缓存。(页面被缓存,就好像参数不存在一样),但由于您有一个不可缓存的操作,您的结果必须在运行中生成
为什么需要一个不可缓存的操作的缺口
cHash是在知道应该获取哪个打字脚本之前进行评估的,因此也不知道应该加载哪些(未)缓存的插件,或者它们是否需要cHash评估(或者禁用它)
裂缝怎么能在表格上工作呢?这是一个表单的概念,用户可以修改值,据我所知,这是一个裂缝的概念来防止这种情况
我不知道您使用带有HTTP GET的表单提交的原因。但是,除排除的参数外,所有GET参数都被考虑在内(请参见上面的响应)
我强烈建议切换到HTTP POST-主要是因为HTTP标准要求POST参数不能被缓存(也不能在浏览器中!),否则访问者A可以使用表单提交某些内容,而访问者B可以看到访问者A的结果。POST用于数据提交,GET实际上在HTTP中定义为“只读”模式
类型3的两个选项是:
- 如果您的用例中没有100%的GET必要性,请切换到POST
- 使用TYPO3中的
选项禁用表单中的所有用户输入值cHashExcludedParameters