实现用户和请求身份验证


Implementing user and request authentication

请原谅我的无知,因为我几乎没有web开发经验。

我已经实现了一个简单的机制,通过该机制我对用户密码进行散列(作为post/get参数发送)并将其存储在数据库中。用户成功登录后,我将用户id(数据库中的PK)返回给客户端。后续请求必须具有用户ID,该ID用作验证请求的基元机制。

我已经阅读了一些机制,从简单的http身份验证开始,使用一个盐水散列(我正在使用),实现看似复杂的OAuth身份验证的访问令牌。啊!也许最后是关于CCD_ 2。

撇开后两个问题不谈,我还没有完全理解,我似乎有一个非常基本的问题,我还没能找到答案。

很抱歉,这不是一个直接的编程问题,但我问的原因是我在谷歌上找不到答案,或者说没有使用正确的搜索关键字。

问题是,考虑到访问令牌和api密钥等所有机制,即使我要实现这个机制但不使用https,实现它们有意义吗?我的意思是,就像任何人都可以窥探我的明文密码或用户id一样,他也可以窥探令牌/密钥,然后恶意使用它,从而使整个机制变得无用。这是否意味着https是唯一真正安全的选择?

我一定错过了什么,但如果能给我指点迷津,我将不胜感激。

这是否意味着https是唯一真正安全的选择

不,没有单一的"安全"选项,而是您实施的一系列缓解措施,以降低应用程序各个点的风险。HTTPS做3件不同的事情:

  1. 它提供了对网站身份的保证(网站验证)
  2. 它提供了内容未被操纵的保证传输(数据完整性)
  3. 它保证在传输过程中不会发生窃听(数据保密)

如果你不使用HTTPS,那么如果攻击者正在监视或操纵纯文本数据包,你所谈论的所有其他安全实践都很容易变得毫无价值。看看我关于传输层保护不足的帖子,看看这在实践中意味着什么。

是的,如果没有HTTPS,一些随机黑客可能会嗅到来自系统的数据包,并窃取登录信息。