如果我将用户凭据作为有效负载,在标头,参数或查询中传递,是否有任何区别?

时间:2015-10-26 22:37:59

标签: security authentication credentials

我正在为我的应用程序制作一个API,我想知道我是否将用户的凭据作为有效负载,标题,参数或查询传递是否有任何不同的安全性?除了安全性之外,性能方面是否有任何差异,另一方面是否快一点?

这是用于通过用户名和密码在GET请求中从客户端到服务器验证用户。

2 个答案:

答案 0 :(得分:1)

当您将凭据作为有效负载或标头或参数或查询发送时,会有很多不同。但这取决于您使用 http或https 。如果 http ,那么根本不建议您通过这些媒介不惜任何代价发送凭据,因为可以轻松跟踪请求和数据。在https的情况下,您可以这样做,但最受尊重的方法是使用基本身份验证机制,这就是为什么构建或使用OAUTH。

答案 1 :(得分:0)

GET方法旨在用于从服务器获取一些信息,POST - 发送数据或请求操作,因此不应该使用GET。

您不应将身份验证凭据作为请求参数传递,因为它们很容易在代理服务器,临时路由器或不安全的网络上泄露。

将它们传递到POST有效负载或请求标头可以最大限度地减少泄漏的可能性,但无论如何必须使用安全的浏览器到服务器通道(https)。

在服务器上处理身份验证请求时,请确保它来自您自己的服务器,而不是其他服务器。这可以通过使用生命周期有限的服务器生成的密钥/令牌来实现,并在使用浏览器发送的凭据处理POST请求时检查该令牌的有效性。

如果您从服务器发出某种身份验证令牌或会话ID并将其保存在Cookie中,则应设置HttpOnly flag以阻止从JavaScript访问它们。

如果您开发无状态单页面应用程序,请考虑使用JSON Web Token (JWT)来处理身份验证/授权声明,这将最大限度地减少在后端请求永久存储(数据库)的需要,并帮助处理多个分布式资源的身份验证过程