我写了一些API。它需要一个API令牌。 我只能通过后端访问此API。 我应该仅通过标头接收API令牌,还是可以从查询字符串参数接收API令牌? 在安全方面有区别吗?
编辑:忘了提及,我当然使用SSL
答案 0 :(得分:0)
所有授权都在标头中,只有标头更安全 在查询参数中,这些是公开的
例如如果您发送“赞”查询,它将对所有人公开
永远不要这样做
curl -X GET http://localhost:5051/v1/user/verifytoken?token=bearer-xdrRxfdfdfdf
答案 1 :(得分:0)
您可能需要复习cookie和令牌之间的区别,以帮助您找到答案。
Cookie的目的是将状态带入本质上是无状态协议的http,http协议没有状态的概念,只有通过将这些cookie或用于识别我们服务器的请求中的少量数据引入状态
默认情况下,所有http请求中都包含Cookie,它们在任何请求的标头上均以属性的形式显示。服务器可以选择将信息放置在用户cookie上,以对该用户唯一标识特定服务器。
因此,如果他们登录的是我正在制作的网站,则可以将一些信息粘贴到该cookie中,说这是user13794,并且在任何后续请求中,他们将使用cookie 13794,该用户说这是同一位用户回来,同一个人的另一个请求。
Cookie会自动包含在所有请求中,而且非常重要的是,每个域都是唯一的,例如Google.com和eBay.com。您拥有的与google.com绑定的cookie不会,并且默认情况下无法与ebay.com共享,这就是我们如何对所有请求进行某种程度的安全保护。因此,如果我登录google.com然后访问hacker.com,则hacker.com网站将无法从Google提取Cookie并劫持我的会话。
SO cookie不能发送到不同的域,这是出于安全目的而存在的,因此您不能轻易地劫持人们的会话。
与cookie相对的是令牌的概念,它是作为一种约定引入的,用于在令牌不再有用的情况下使用令牌代替cookie。
使用令牌没有自动完成,我们必须在令牌中手动添加标头,该标头可能是一串字母和数字,并且可能将其包含在特定标头中,因此我们必须手动接线随时更新我们的令牌。
令牌的好处是我们可以将其发送到希望的任何域,因此,如果我在google.com上并且想要向完全不同的域发出经过身份验证的请求,则可以使用令牌来实现
我会向其他域提出请求,包括我的特定令牌和繁荣!我在其他域上通过了身份验证。
这就是我my绕的说法,就像使用cookie一样,令牌仅通过标头(而不是查询参数)手动连接。