通过构建API的过程,您很可能会遇到其中一些问题.我将概述可能非常方便实际构建可用的API的概念,并遵循开放标准(反过来,这使得第三方调整现有代码与其交互变得微不足道) .
第一个关键字是:SSL.永远不要想到不使用它.这提供了一个安全的套接字层,在该套接层上可以以安全的方式进行通信,因此使得窃听和MitM攻击更难以构思.
无论如何,不要跳过这个.证书的成本低于每年60美元,所以它的成本并不高,从长远来看可以为您节省很多.
在服务器技术方面,使用您想要的.您的主要要求是可以处理四个常见HTTP谓词的Web服务器:GET,POST,PUT,DELETE.我马上解释一下原因.
这是一个有争议的领域,因为很多人"认为他们有一个安全的方式这样做".答案是不正确的.您的身份验证的目的是允许客户端使用其凭据轻松进行身份验证,但要防止没有特权的第三方这样做.
只需在Feed中添加API密钥,就会导致有人最终获得它.我已经多次看到这个特定的东西,我强烈反对它,特别是因为有更容易的选择.
我将介绍几个方面,分别将它们标记为(A)或(S),用于身份验证和签名.签名是用于呈现您的请求防篡改的方法.身份验证证明了您的身份.
亚马逊将此技术用于其所有S3/AWS API,并且是一种非常轻量级的签名和身份验证请求方法.我个人觉得它比较巧妙.
基本理念:
这很简单而且很巧妙.它保证的是什么:
这使用相同的HTTP请求整齐地包装两个问题,代价是一个保留的GET/POST字段.亚马逊还要求请求中存在时间戳,以防止重放攻击.整齐!
(对于参考:HMAC- ALGO = ALGO( (key XOR PAD) concat ALGO(key XOR PAD2) concat message).ALGO可以是任何散列密码- SHA256优选用于其轻量的特性)
你可能听说过它.这个想法很简单:给你一把钥匙和秘密.这允许您排队等待临时令牌.然后,此令牌用于执行请求.
这样做的主要优点是存在许多库来处理它,包括客户端和服务器端.另一个优点是OAuth有两种操作模式:双腿(服务器 - >没有客户端交互的服务器)和三脚(客户端 - >服务器 - >服务器).
主要缺点是获取令牌的2个HTTP请求.
......导致重播攻击.不要考虑它.
混合方法是可能的事情.例如,与OAuth结合使用时,HMAC标牌非常棒!
如今的API端点遵循两个主要标准:SOAP(XML-RPC)或REST.如果您要构建终端以发布潜在客户,您也可以构建相应的API来读取潜在客户并将其删除以备将来使用.
因此,您的API将采用以下形式:
/my/endpoint/
- GET: gets a list of leads
- POST: creates a new lead
/my/endpoint/ID/
- GET: get lead info
- PUT: modifies lead
- DELETE: deletes the lead
Run Code Online (Sandbox Code Playgroud)
这样您就可以方便地对API进行面向未来的验证.
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |