我是API和json的新手,所以这可能是基本的。但在谷歌上找不到解决办法。
我想通过点击电子邮件中的超链接通过API更改电子商店订单状态。我激活了一个API,并设法通过以下命令更改了Postman的订单状态:
PUT {url}/api/v2/orders HTTP/1.1
Content-Type: application/json
Authorization: Basic {abcdefgh}
{
"orders": [
{
"order_number": "00001",
"status_id": "16",
}
]
}
是否有一种方法,如何运行这个命令,只需点击一个超链接?既然授权是硬编码的,我应该担心安全问题吗?
干杯!
出于安全原因,电子邮件客户端不支持执行脚本或除GET请求以外的任何操作。因为这需要使用javascript/jquery来构建有效负载,并使用该有效负载调用API。
您需要将客户端带到一个安全页面登录并管理他们的订单。
这个超链接可能会把他们带到登录页面或注册页面。
令牌授权可以使用电子邮件作为验证,将用户带到页面查看他们的订单。但是,同样,你也不能确定是否有授权的人打开了电子邮件。
关于硬编码任何类型的授权,这是一个很大的不。
由于在电子邮件中单击超链接与在浏览器栏中键入地址相同,因此无法通过它发出POST请求。一种方法是生成一次性使用的令牌,并将其放在url中。当用户单击kyperlink时,对服务器的GET请求将包含可用于验证的令牌。
是否有一种方法可以通过单击超链接来运行此命令?
一般来说没有。单击电子邮件中的链接会发出GET
请求,该请求不能包含正文。也就是说:您的"orders"
JSON将不包括在内。它也不知道包括Authorization
头。
据我所知,没有常见的电子邮件客户端允许您发出PUT
或POST
请求。
所以:你能在URL中编码请求,并使用GET
请求代替吗?当然可以。不要这样做
这有几个原因。最重要的是你提到的:
既然授权是硬编码的,我应该关心安全性吗?
硬编码授权通常是一个坏主意,特别是在电子邮件中:(1)你不能保证电子邮件是加密的,这会将凭证暴露给任何可以捕获消息的人;如果你把这封邮件转发给我,我现在就有你的凭据了。
此外,如果您在URL中包含授权,那么它现在就在用户的浏览器历史记录中,并且如果他们与任何人共享该链接("嘿,看看这个回形针的交易!"),那么:与上述相同。