【问题标题】:reducing the query string length减少查询字符串长度
【发布时间】:2013-12-10 06:34:50
【问题描述】:

在我的 Web 应用程序中,我们使用 PBEWithMD5AndDES 加密查询参数,然后使用 sun.misc.BASE64Encoder().encode() 对其进行编码。它使整个 URL 的长度超过 140 个字符。有没有办法不改变加密和编码,我可以将长度减少到 80 个字符左右?如果我必须更改加密算法和编码以减少长度,我应该使用什么来牢记安全性?

【问题讨论】:

  • 如果您让我们知道您使用的是哪种加密算法,我想可以更好地帮助您。
  • 您可以计算 base64 编码后的输出长度,例如新长度几乎等于旧长度 * 1.33。要减少输出长度,您应该尝试使用更大字母的算法(如 base85)。

标签: java url-rewriting


【解决方案1】:

Base64 编码有其已知的开销,而加密也有开销 - 切换到不同的编码算法可能会减少开销,加密算法也可能会减少 - 但我在这里看不到肯定的赌注 - 您可能会将其减少到 139 个字符对于您当前的数据集,但任何额外的数据要求可能会再次重复该问题。

我看到两个选项:

  1. 在加密之前压缩数据 -
    优点:相对容易开发。
    缺点:可能会影响性能,可能无法充分减小大小.
  2. 使用 POST 并在响应正文中传递参数,而不是作为查询参数。
    优点:加密数据不会记录在服务器日志中(安全性),大小为“无限制” 缺点:可能需要更多的开发时间,在您的环境中可能完全不可能(外部要求、技术问题等)

如果有机会,我会选择选项 #2。

【讨论】:

  • 谢谢。选项 2 不是我目前可以选择的。如果我能很快做到,我会尝试第一个。如何压缩查询参数?
  • 查看这个 SO 答案:stackoverflow.com/a/5934620/357360 另外 - 这是另一个与字符串相关的示例:coderanch.com/t/374637/java/java/…
  • 谢谢,我试过这些东西,但有时会缩短长度,有时会增加长度。波动很大。
  • 所以通过 POST 发送响应/请求正文中的值是您唯一的手段。
  • 另一种选择是将值拆分为两个查询参数 - 但在正文中传递它要好得多 - 你避免它的原因是什么?
【解决方案2】:

只有你可以减少查询参数名称的长度。 如果您尝试使用任何类型的编码,它会增加查询的长度。

所以我建议使用表单提交而不是基于查询的提交。 或者请发布您的完整场景,以显示您希望在哪些条件下提交数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    相关资源
    最近更新 更多