2017-03-09 58 views
-2

我目前正试图掌握在Sinatra,我注意到有没有最新的身份验证像设计的轨道。我决定创建自己的身份验证系统,我的问题是,为确保用户安全,我需要采取哪些最重要的预防措施?我需要以散列形式存储密码,可能用盐,但还有什么?请记住,我不是安全专家,不会问这个问题,否则。什么是必要的身份验证是安全

+1

这有点宽,因而不适合SO谨慎。阅读http://security.stackexchange.com/questions/tagged/authentication上的所有内容? xd – ndn

+0

请阅读“[问]”和链接页面,以及“[mcve]”。编写自己的身份验证系统不是跳到中途的问题。我建议您将其作为现有项目的一部分,以改进它并了解所需内容,然后考虑您是否真的想要继续。 SO不是问这个问题的地方,但其他的[se]网站会很好。 –

回答

0

尝试与bcrypt宝石加密密码

与会话劫持

例如

post "/signup" do 
    password_salt = BCrypt::Engine.generate_salt 
    password_hash = BCrypt::Engine.hash_secret(params[:password], password_salt) 

    #ideally this would be saved into a database, hash used just for sample 
    userTable[params[:username]] = { 
    :salt => password_salt, 
    :passwordhash => password_hash 
    } 

    session[:username] = params[:username] 
    redirect "/" 
end 
+0

请问您能详细讨论会话劫持吗? – Leo

+0

窃取用户的会话ID可让攻击者以受害者的名义使用该Web应用程序。 http://guides.rubyonrails.org/security.html#session-hijacking –

+0

[so]这个问题太广泛了。 https://meta.stackoverflow.com/questions/256328/vote-to-close-unclear-questions-immediately-after-commenting and https://meta.stackoverflow.com/questions/260263/how-long-should-我们等待海报来澄清问题之前关闭可能会帮助你回答。 –