【问题标题】:Is base 64 encoding with a secret key of strings, a possible way of Protection?带有字符串密钥的base 64编码是一种可能的保护方式吗?
【发布时间】:2011-06-29 03:40:19
【问题描述】:

我在一篇论文中读到了

任何最终用户都可以修改这些值(因为它们源自他的浏览器),但如果 Web 开发人员进行编码,例如,将所有字符转换为 URL 编码(十六进制)或使用特定编码发送GET/POST 参数(例如,带有一些密钥字符串的 base64)必须重新访问攻击向量。

那么,这意味着使用 base 64 和密钥对变量进行编码是一种很好的做法吗? url-encoding是如何实现的?

这有意义吗?我从来没有读过编码变量作为一种保护方式

谢谢

paper 第 5 页

【问题讨论】:

  • 我可以看到从服务器到客户端或服务器到服务器的 Base64 编码数据如何在安全/模糊的情况下完成,但是如果你从客户端(又名:浏览器)到服务器然后一切都是不安全的并且恶意攻击者可见/可访问。您可能能够生成哈希或插入一些您使用表单验证/比较用户的位。如果您想防止有人在捕获数据,您应该使用 SSL。
  • base64 编码不使用密钥
  • 遗憾的是 Base64 与安全无关。如果您想深入讨论原因和讨论,请随时将其迁移到 security.stackexchange.com,这个问题绝对是热门话题
  • 看来作者在这里混合了加密和base64编码。 Base64 没有密钥,简单地使用 base64 并不能避免 SQL 注入攻击,只会让它变得更难一点(即攻击者不能简单地修改浏览器地址行中的 URI,而必须使用一个软件首先将攻击文本编码为base 64)。

标签: php security post get


【解决方案1】:

Base64 编码方案通常在需要对需要通过旨在处理文本数据的媒体(如 HTTP)存储和传输的二进制数据进行编码时使用。这是为了确保数据在传输过程中保持完整而不被修改。

所以是的,它可以是一种保护原始数据免受不必要修改的方式。但请记住,它不是接近加密


URL 规范 (RFC 1738, Dec. '94) 提出了一个问题,因为它将 URL 中允许的字符的使用限制为 US-ASCII 字符集的有限子集:

"...仅限字母数字 [0-9a-zA-Z]、特殊字符 "$-_.+!*'()," [不包括引号 - ed] 以及用于它们的保留字符保留用途可以在 URL 中未编码地使用。"

这里有一篇关于 http://www.blooberry.com/indexdot/html/topics/urlencoding.htm 的好文章

在 PHP 中,您可以使用string urlencode ( string $str ) 方法进行 URL 编码。

【讨论】:

  • 关于那个? URL编码(十六进制)?这是如何以 php 方式制作的?
【解决方案2】:

所以,这意味着这是一个好习惯 使用 base 64 编码变量 和密钥?如何实施 url 编码?

这有意义吗?

不,这真的没有意义。 base64 不是一种加密方案,它只是一种将二进制数据编码为 7 位文本子集的一种方式,该子集不太可能被电子邮件服务器等更改。

base64没有密钥,不能加解密。

我的猜测是,该论文的作者在您引用的那位之前讨论了一些加密方案,他们后来只提到 base64 作为一种通过 HTTP GET 或 POST 参数安全地传输他们已经加密的数据的方法。

没有看到您引用的其余内容,我们不知道。

【讨论】:

    【解决方案3】:

    base 64 编码不提供任何安全性。它几乎和单字母替换密码一样糟糕

    这里是如何在 base 64 中编码/解码,也称为 radix64 http://en.wikipedia.org/wiki/Base64

    我不确定在这种情况下使用密钥进行编码意味着什么

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 2012-04-10
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2021-11-02
      相关资源
      最近更新 更多