在url或post / curl安全中使用Api令牌

时间:2016-07-12 07:45:13

标签: php laravel laravel-5.2

我见过一些视频教程,例如Laravel。 有人谈论用户在数据库中的API令牌,并用于URL中的每个请求。

例如: www.domain.nl/api/user/1/edit?token =)#(UJRFe0wur0fMjewFJ

  1. 即使您想要更新,删除或添加?
  2. ,这是否安全?
  3. 任何人都可以拦截令牌吗?
  4. 最好的方式是什么?
  5. 我希望有人可以帮助我,谢谢!

3 个答案:

答案 0 :(得分:2)

即使您想要更新,删除或添加?

,这是否安全?

不,一般不是。 URL中的令牌可以在请求期间一直读取。如果令牌是唯一的并且只能一次性使用,那将是安全的。

任何人都可以拦截令牌吗?

是的,几乎所有请求路由中的所有人,除非您使用安全的HTTPS连接。然而,即使这样,也可以发现令牌,例如在访问日志等中。

此外,使用令牌i URL进行GET请求意味着带有令牌的URL将保留在您的浏览器历史记录中,这是另一个潜在的安全风险。

什么是最好的方式?

最好的方法是在标头或POST请求字段中发送令牌数据。

有用的链接

参见SO QA“Is an HTTPS query string secure?

答案 1 :(得分:0)

在GET中仅通过令牌进行授权对我来说似乎不是一个好主意。

我建议使用Laravel的身份验证中间件。 https://laravel.com/docs/5.2/authentication

在Laravel中有一个csrf令牌,但它不用于在站点内验证“用户”。也许他们在谈论这个。

答案 2 :(得分:0)

<强> 1。即使您想要更新,删除或添加?

,这是否安全?

令牌与密码等其他凭据信息一样敏感。它可用于访问受限制的权限。优选地,不通过URL中的查询字符串。

<强> 2。任何人都可以拦截令牌吗?

如果您使用的是HTTPS,则会受到保护。但是您的日志,浏览器缓存将存储整个URL,包括不太好的令牌。

第3。什么是最好的方式?

将其放入标题中的授权字段中。

authorization : Bearer <YOUR TOKEN> 

当您使用HTTPS时,它也会被加密。它不会被缓存并记录在日志中。

Laravel已经支持这种请求。它会知道使用此Request方法

自动访问它
public function bearerToken()
{
    $header = $this->header('Authorization', '');

    if (Str::startsWith($header, 'Bearer ')) {
        return Str::substr($header, 7);
    }
}