【问题标题】:Simple cipher to encode URL用于编码 URL 的简单密码
【发布时间】:2014-10-26 08:18:04
【问题描述】:

我想编码一个 url (http://www.someurl.com) 以便我可以将它作为参数添加到 GET 调用:

domain.com/encoded_url

一旦在另一端收到,我需要能够解码 url,但是,安全不是问题。我宁愿坚持使用简单的密码(必须能够处理特殊字符,如“:”和“?”),因为更高级的密码生成的编码字符串不会作为有效的 URI 字符串传递,也不能作为 URL 参数传递。

在 Ruby 中实现的哪种密码最适合此目的?

【问题讨论】:

    标签: ruby-on-rails ruby encryption


    【解决方案1】:

    使用 Base64 url​​safe_encode64

    Base64 是一个好主意,Ruby 提供了它的 URL 安全实现,因为默认会产生像 + 和 = 这样的字符。 urlsafe_encode64 将使用 '-' 代替 '+' 和 '_' 代替 '+',因此它们可以像 URL 参数一样传递。

    require "base64"
    
    encoded_url = Base64.urlsafe_encode64('http://www.someurl.com', ) #=> "aHR0cDovL3d3dy5zb21ldXJsLmNvbQ=="
    decoded_url = Base64.urlsafe_decode64(encoded_url) #=> "http://www.someurl.com"
    

    【讨论】:

    • 这是更好的答案,因为 urlsafe_encode64 将尊重您提到的保留令牌的 uri 规范。
    • 什么是 js 相当于 Base64.urlsafe_decode64(encoded_url)
    【解决方案2】:

    如果您确实需要对其进行编码并且安全性不是问题,只需使用 Base64 然后 URI 转义它。 不过没必要,只是 uri 转义它。

    str = Base64.encode64(url)

    encoded_str = URI.encode(str)

    顺便说一句,这是一个半可能的重复

    Ruby url encoding string

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多