gpt4 book ai didi

zend-framework - 是否可以使用 Zend_Cache_Backend_Static 将静态页面缓存为 HTML 来限制 Zend Framework 应用程序的 $_GET 参数数量

转载 作者:行者123 更新时间:2023-12-02 04:02:50 25 4
gpt4 key购买 nike

我刚刚使用 Zend_Cache_Backend_Static 设置了静态页面缓存,以在我的应用程序中提供缓存的 html 文件,效果很好。我唯一担心的是它使用 $_GET 参数缓存文件的方式。因为它会自动创建一个映射到提供的 URL 路由的文件夹结构,所以在可能故意将大量 $_GET 参数附加到现有页面的情况下,这是否存在潜在的安全风险?达到最大目录深度还是最大文件长度?

例如: 目前我正在将我的页面缓存到 /public/cache/static/所以使用标准路由器/module/controller/action/param1/val1/param2/val2或标准查询字符串 /module/controller/action?param1=val1&param2=val2将创建以下目录结构:

/public/cache/static/module/controller/action/param1/val1/param2/val2.html 
/public/cache/static/module/controller/action?param1=val1&param2=val2.html

允许人们以这种方式(尽管有限)访问创建目录结构让我有点担心。 Zend_Cache_Backend_Static 和相应的 Zend_Cache_Frontend_Capture 都必须在 ini 文件中设置,而不是通过 Zend_Cache 工厂,并且似乎没有任何设置选项。

是否只是用限制 $_GET 变量数量的自定义路由替换默认路由器的情况?这可能吗,还是我需要准确指定每条路线所需的变量(不是世界末日,而是更多限制)

更新:

所以现有的处理静态缓存的重写规则如下:
RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cached/index.html -f
RewriteRule ^/*$ cached/index.html [L]

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{DOCUMENT_ROOT}/cached/%{REQUEST_URI}\.html -f
RewriteRule .* cached/%{REQUEST_URI}\.html [L]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ index.php [NC,L]

如果请求命中静态缓存中的页面,它将发送该 html 页面。如果不是,它将命中 Zend Framework 并生成它。

我可以在开头添加以下内容:
RewriteCond %{QUERY_STRING} \S
RewriteRule [^\?]+ /$0? [R=301,L]

这将完全删除我的查询字符串。这很好,因为我仍然可以使用 Zend Framework 的 URL 路径方法传递 $_GET 变量(我也通过提供非常明确的路由来限制它)。但是是否可以在不重定向的情况下做到这一点?

最佳答案

理想的方法是将其定义为 RewriteCond,但我不确定是否可以使用 mod_rewrite 计算 GET 参数的数量。

因此,最好的解决方案可能是重定向到一个独立的 php 脚本,该脚本决定是否使用缓存的 html 文件。

<?php

if (count($_GET) >= 20) {
require __DIR__ . 'index.php';
} else {
require '/path/to/cache.html';
}

关于zend-framework - 是否可以使用 Zend_Cache_Backend_Static 将静态页面缓存为 HTML 来限制 Zend Framework 应用程序的 $_GET 参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9326406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com