我想让我的数据库保持陈旧的几乎帐户,我正在考虑制作新的注册和邀请将他们的数据作为加密或散列网址放入欢迎电子邮件中.访问URL中的链接后,该信息将作为帐户添加到数据库中.目前有什么东西吗?关于以这种方式进行用户注册的任何参考,想法或警告?谢谢!
编辑:我做了一个有效的例子,网址是127个字符.
http://localhost/confirm?_=hBRCGVqie5PetQhjiagq9F6kmi7luVxpcpEYMWaxrtSHIPA3rF0Hufy6EgiH%0A%2BL3t9dcgV9es9Zywkl4F1lcMyA%3D%3D%0A
Run Code Online (Sandbox Code Playgroud)
显然,更多数据=更大的网址
def create
# Write k keys in params[:user] as v keys in to_encrypt, doing this saves LOTS of unnecessary chars
@to_encrypt = Hash.new
{:firstname => :fn,:lastname => :ln,:email => :el,:username => :un,:password => :pd}.each do |k,v|
@to_encrypt[v] = params[:user][k]
end
encrypted_params = CGI::escape(Base64.encode64(encrypt(compress(Marshal.dump(@to_encrypt)), "secret")))
end
private
def aes(m,t,k)
(aes = OpenSSL::Cipher::Cipher.new('aes-256-cbc').send(m)).key = Digest::SHA256.digest(k)
aes.update(t) << aes.final
end
def encrypt(text, key)
aes(:encrypt, text, key)
end
def decrypt(text, key)
aes(:decrypt, text, key)
end
# All attempts to compress …Run Code Online (Sandbox Code Playgroud) 我想生成一个安全的一键访问类型的URL,类似于下面的示例.我将使用PHP但这是无关紧要的,因为我只是想了解基本概念.一些答案建议使用GUID,但我认为这不会给我一个绝对独特,安全的URL,如下所示.
# Google Calendar
3qq6jlu04ptlhmb9fencsu5t2k
# Private
3qq6jlu04ptlhmb9fencsu5t2k
# Private 'token'
163a0afe7fkb1ba2acd04c11ef0eefe8
# LogMeIn
# 1024 bit - 128 Character URL
72oxuj0fzefqo3fu04xjtvmd0adj2948rfh7g5by4forkwcy7t651z7hcb6kjjgqkxmvmfqpyrcfy15z1fto8ewcxstjc6avicag7d5qnoimsm19kb9kgi9i7v6z01d5
Run Code Online (Sandbox Code Playgroud)
我倾向于128字符,1024位样式,因为它看起来非常安全.我想我可以制作四个MD5哈希并合并它们,但这真的有效吗?
对于像这样的网址,我有两个特定的意图,但我确信还有其他人可能会觉得这很有用.
1)即时登录用户的快捷方式/图标
2)一次性网址(密码恢复链接)
我在哪里可以找到关于修饰符的文档gsub?\ a\b\c\1\2\3%a%b%c $ 1 $ 2%3等?
具体来说,我正在看这段代码...... something.gsub(/%u/, unit)那是什么%u?
所以我有一个Web应用程序,它集成了几个需要身份验证的API和服务.我的问题是,在我的源代码中以纯文本格式存储我的身份验证凭据是否安全? 我该怎么做才能安全地存储这些凭据?
我认为这是一个常见的问题,所以我希望看到一个解决方案来确保答案中的凭据.
回应评论:我经常使用PHP,Java和RoR
我希望看到更多的选票来回答这个问题.