不应该使用查询参数的 IT 策略有啥理由吗?

Posted

技术标签:

【中文标题】不应该使用查询参数的 IT 策略有啥理由吗?【英文标题】:Any justification for an IT policy that query parameters should not be used?不应该使用查询参数的 IT 策略有什么理由吗? 【发布时间】:2009-12-24 04:17:44 【问题描述】:

去年收购了我的公司,该公司负责构建广告服务器、联属网络、联系表格和 CRM 软件,现在我们正在重新设计我们的技术以适应母公司的 IT 政策和指导方针。

其中一项政策是一个巨大的症结,给我们带来了各种各样的问题:

不得在最终用户可见的任何 URL 中使用查询参数

这包括内容 URL、广告点击目标、重定向以及将显示在地址栏中或鼠标悬停状态栏更新中的任何内容。效果将是没有附属 ID 参数、媒体源跟踪 ID、会话 ID、CMS 内容选择参数等。如果不将参数数据从一页传递到另一页,我们软件的几个基本功能就无法完成。在我们的例子中,许多链接来自不同的站点或子域,也不可能通过 cookie 传递数据

我得到的唯一理由是查询参数会阻止某些代理缓存正常工作。这对我来说毫无意义——我从未听说过这样的事情——而且没有人愿意或有兴趣详细讨论它。我什至没有得到一个具体的例子,说明什么具体被破坏或为什么创建该政策。

无论如何,这是一项全球性的企业 IT 政策,最终推理并不重要,只有合规性。虽然改变它很可能是不可能的,但我仍然想了解哪些有效的担忧可能促使其机构。了解这种心态可能是找到解决方法的第一步。

我首先想到的解决方法是在 URL 的路径部分中嵌入参数并使用 Apache mod_rewrite 提取它们,但这是不可能的,因为:

推论:每个 URL 都必须提供无法通过其他 URL 获得的唯一内容

因此,创建多个实际引用同一页面但在 URL 中包含其他参数数据的 URL 也是不可接受的。

问题:

是否有不使用查询参数的正当理由?

当查询参数存在时,具体哪些代理或系统无法工作?

这可能与 SEO 有关吗?推论使它看起来如此。

在此限制下,将数据从一个站点传递到另一个站点可能有哪些解决方法?

【问题讨论】:

即使你没有任何好的理由这样做,这也是你的雇主想要的。我不认为一个理性的论点会改变这一点,而不是你已经说过的。 我的第一个想法是……为每个参数化请求生成唯一的 something,即使它像参数散列一样毫无意义。但是,是的,这似乎很愚蠢......我想知道是否有人没有阅读过涉及查询字符串中敏感信息的漏洞,并得出了关于解决方案应该是什么的错误想法。 @GrayWizardx 是的,你是对的!我添加了一个说明,我不希望对其进行更改,但想了解是什么促使他们制定了这样的政策,以便我可以知道他们最关心的问题类型。 @Shog9:最简单的方法:在每种情况下渲染出请求的 URI,然后你突然在每个 URI 上都有唯一的内容 @ryandenki:你是怎么解决这个问题的?他们还坚持他们愚蠢的政策吗? 【参考方案1】:

我只有“解决方法”问题的答案:使用 PATH_INFO。

编辑更具体

而不是/banner.php?what=ever&any=thing 使用/banner.php/what=ever/any=thing。 apache 仍将通过/banner.php 处理请求,并且/what=ever/any=thing 将出现在$_SERVER['PATH_INFO'] 中。您必须自己处理rawurldecodeexplode 字符串,因为网络服务器不会为您执行此操作,但这没什么大不了的。

【讨论】:

这基本上就是我对 mod_rewrite 的想法,但是由于这会为相同的内容创建多个 URL,如果与“仅唯一 URL”的推论相冲突并且也是被禁止的。 :-( 啊哈。我没有给予足够的关注,并认为这只是关于广告。看起来这让 OP 陷入了死胡同。这对他来说实际上是一件好事,因为诉讼很少有兴趣扼杀自己的生意,而且情况最终会得到解决。

以上是关于不应该使用查询参数的 IT 策略有啥理由吗?的主要内容,如果未能解决你的问题,请参考以下文章

pthread优先级和pthread策略有啥关系?

网站搜索引擎优化,值得关注的4个策略有哪些?

CC防护的策略有哪几种?

SEO内容策略有哪几种?

失效策略:缓存淘汰策略有哪些?

面试官:Redis 过期删除策略和内存淘汰策略有什么区别?