【问题标题】:encrypted query string in emails rails电子邮件中的加密查询字符串
【发布时间】:2011-12-25 23:54:13
【问题描述】:

我的应用程序发送了一封电子邮件,其中包含一个 URL。 url 包含一个加密的查询字符串属性。我 CGI 转义了加密值,以便像 + * 这样的符号。等被逃脱。转义的 URL 按预期出现在电子邮件中,但是当我们点击链接时,加密的值会被解密。

例如邮件中的url如下 http://development.com/activate/snJAmJxkMo3WZ1sG27Aq?album_id=2&email=5M%2BjE1G6UB26tw/Ah%2Bzr1%2BJSSxeAoP6j&owner_id=4

电子邮件=5M%2BjE1G6UB26tw/Ah%2Bzr1%2BJSSxeAoP6j

当我们点击此链接时,浏览器中的 url 显示为 http://development.com/activate/snJAmJxkMo3WZ1sG27Aq?album_id=2&email=5M+jE1G6UB26tw/Ah+zr1+JSSxeAoP6j&owner_id=4

电子邮件=5M+jE1G6UB26tw/Ah+zr1+JSSxeAoP6j

+ 替换为空格。因此 参数[:email] = 5M jE1G6UB26tw/Ah zr1 JSSxeAoP6j

这给了我一个 404。

有什么办法可以避免这种情况。如何使浏览器中的 url 也显示为

http://development.com/activate/snJAmJxkMo3WZ1sG27Aq?album_id=2&email=5M%2BjE1G6UB26tw/Ah%2Bzr1%2BJSSxeAoP6j&owner_id=4

在浏览器中?

【问题讨论】:

    标签: ruby-on-rails email url escaping html-escape-characters


    【解决方案1】:

    为了避免这种情况,我对电子邮件属性进行了十六进制编码,使其仅包含字母和数字。使用这些是Hex编码和解码的方法。

    convert string2hex:
    def hexdigest_to_string(string)
     string.unpack('U'*string.length).collect {|x| x.to_s 16}.join
    end
    
    convert hex2string
    def hexdigest_to_digest(hex)
     hex.unpack('a2'*(hex.size/2)).collect {|i| i.hex.chr }.join
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2014-06-03
      • 1970-01-01
      • 2017-08-22
      • 2013-03-20
      相关资源
      最近更新 更多