我见过一些视频教程,例如Laravel。 有人谈论用户在数据库中的API令牌,并用于URL中的每个请求。
例如: www.domain.nl/api/user/1/edit?token =)#(UJRFe0wur0fMjewFJ
我希望有人可以帮助我,谢谢!
答案 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);
}
}