Php 身份验证过程中,为什么要在数据库中存储sessionID?
我对认证的正常过程有一个问题 我有很多谷歌,读了很多书,但是仍然不能很清楚的了解认证的过程, sessionID实际上是什么? 为什么我们要在数据库中存储sessionID,因为我认为sessionID将在某个时候过期。为什么我们还需要存储它们? 如果我在android应用程序或桌面应用程序中使用OAuth会怎么样 更多说明:Php 身份验证过程中,为什么要在数据库中存储sessionID?,php,android,authentication,Php,Android,Authentication,我对认证的正常过程有一个问题 我有很多谷歌,读了很多书,但是仍然不能很清楚的了解认证的过程, sessionID实际上是什么? 为什么我们要在数据库中存储sessionID,因为我认为sessionID将在某个时候过期。为什么我们还需要存储它们? 如果我在android应用程序或桌面应用程序中使用OAuth会怎么样 更多说明: 例如,我使用表单登录。用户发送“用户名”和“密码”,然后我使用MD5($passWord),然后将它们全部发送到服务器URI,对吗 然后服务器获取用户名和密码,然后将密码
hash('whatever_algorithm', $password)
有像PHPass这样的库和像password\u hash这样的函数可以帮助您
作为一种协议,您应该使用SSL并选择https
然后服务器获取用户名和密码,然后将密码与数据库中的密码进行比较,如果相同,则正确。服务器将会话ID发送回用户,将设置cookie。这个过程正确吗
这个过程是错误的,因为您不应该在数据库中保留清晰的凭据数据,应该存储的是凭据的哈希,您应该尝试使用用户提供的用户名+密码复制它。
散列是一种非对称算法:它只走一条路
您可以通过在会话上添加一些遵循特定预期输入/输出交换的身份验证步骤来加强安全性
如果它是正确的,服务器将在数据库中存储sessionID,但sessionID将在一段时间内过期,为什么我们将会话ID存储在数据库中
您可以在sessionID处于活动状态(而不是超时)时存储它,这样用户仍然可以连接,而无需重新验证。
当会话返回错误代码时,您将其ID保留在数据库中,以便跟踪相关信息并生成日志。
例如,您可以:
- 在会话表中添加客户端的IP,以便跟踪谁
- 添加链接到会话的错误代码,以便跟踪内容
- 在表中添加日期时间,以便在
如果在会话期间发生错误,您可能需要知道原因(有人试图绕过您的会话安全性或会话实现中的错误)。当您通过数据库存储会话处理时,您还需要将id存储在数据库中。通常会话存储在磁盘上。顺便说一句,不要使用MD5作为密码的哈希方法,它现在是不安全的。相反,使用MD5,使用SHA1。我可以发布一段代码来使用它。如果你需要的话告诉我很好的解释!!谢谢大家!!我对认证很陌生,我其实不知道认证的过程。谢谢大家!我对身份验证非常陌生,实际上我不知道过程@凯诺。1-如果我不使用MD5,那么什么更好?比如SHA-256?2-在我使用SSL传输密码和用户名之前,我是否需要加密散列数据,然后使用SSL或仅使用SSL?3-我如何知道,哪节课是给谁的。我应该使用会话ID还是?为什么我看到一些网站,在我登录后,cookie中有SessionID?如果你使用SSL,你不需要散列任何东西。如果我破解SSL加密,散列将很容易撤销。存储密码散列时,请使用具有大量位的散列(如SHA-256或更好)。您永远不需要知道会话ID是什么。服务器会自动为您隔离会话。当您使用$\u会话时,它是当前用户的会话。非常清楚,谢谢@Answers\u Seeker。我还有一个关于sessionId的问题,1-服务器收到hased密码,然后再次散列,然后将其存储到数据库?两次散列?2-我应该使用什么信息生成SessionID?