接口数据安全10方案--签入数据
数据电文的签名检查是确保数据传输安全的常用手段,可以确保数据在传输过程中不被篡改。我以前用过笔名测试。
1、数据签名:
原始请求参数的消息摘要可以通过哈希算法(例如MD5或SHA-256)生成,然后使用私钥对该摘要进行加密,以获得与消息相对应的数字签名(在此过程中添加签名)。通常,请求方将电子签名和消息原件发送给接收方。
2、签名检查:
接收方在收到原始消息和数字签名后,使用相同的哈希算法(例如,所有MD5)从消息中生成摘要a。此外,当通过合作伙伴提供的公钥对数字签名进行解码时,将获得摘要B,如果将a和B相互比较,则可以知道信息是否被伪造。
事实上,如果您签名,我的理解是使用哈希算法+基于特定规则的加密算法生成唯一的标签符号。在检查签名时,根据相同的规则处理请求参数,并使用相同的哈希算法解密相应的密钥,以比较签名是否匹配。
在另一个例子中,一些小伙伴意识到了这一点。按升级顺序连接所有非官方参数(包括package accessKey、唯一开发者ID),然后连接到secretkey(仅用于本地加密,不参与网络传输,仅用于签名),获取stringsigntemp值,最后在MD5操作中获取签名。
服务方必须验证合法身份访问密钥和签名是否正确,以便在收到消息后进行检查。这允许您解决身份验证和参数更改问题。如果请求参数被劫持,劫持者无法检索secretkey(仅使用本地加密,不参与网络传输),因此他们无法伪造合法请求。
你为什么要检查签名
一些小型合作伙伴进行签名检查,以防止数据在传输过程中被修改。当使用协议加密数据时,为什么HTTPS会更改数据?你怎么办理登机手续?
即使在转发时对数据进行了加密,理论上捕获的数据包也不会被篡改。但HTTPS从来都不安全。另一个:HTTPS加密部分仅在外部网络上。许多服务与内部网兼容。通过添加签名,可以保证中间人不会对其进行更改,因此您需要注册为通用传输类开发高度安全的接口。
在日常开发中,我们的网站和应用程序需要用户登录。如果您有非登录界面,如何确保安全?可以使用令牌认证机制。
接口数据安全10方案--令牌认证方案
令牌身份验证方案:用户向客户端输入用户名和密码,单击登录,服务器正常检查密码,返回到客户端特定值令牌,并将令牌作为键值存储在缓存中(通常为redis)。后续客户端在服务器端为所有需要权限模块的操作提供令牌,当它们接收到请求时,首先检查令牌,如果令牌存在,则表明它们是合法请求。
令牌登录授权流程图如下所示。
1、用户输入用户名和密码以启动登录请求。
2、检查服务器上的密码。当检查通过时,将生成全局唯一的令牌。
3、将令牌保存到redis。这里,密钥是令牌,值是用户ID或用户信息。设置过期日期。
4、将此令牌返回给客户端。
5、如果用户提交其他业务请求,则必须获取此令牌
6、后端服务阻塞接口请求,执行令牌有效性测试,从中获取用户信息,并提供后续业务逻辑的使用。如果令牌不存在,则禁用该请求。
您如何确保代币的安全?
例如,如果接收到令牌,则可以调用所有服务器端接口。可以从几个方面考虑。
1、令牌设置合理的有效性;
2、使用HTTPS协议;
3、令牌可以再次加密;
4、要访问敏感信息,仅添加令牌是不够的,通常会重置白名单;
5、可能有些人还记得JWT(JSON web令牌);
6、时间戳超时机制;
您可以轻松检索数据。假设您使用HTTPS和签名,即使中介获取数据消息,您也无法实际显示数据。然而,一些非法分子对实际数据不感兴趣,直接检索捕获的数据包,恶意请求(DoS攻击等)并破坏系统。
您可以引入时间戳超时机制以确保接口安全。也就是说,每次用户请求时,都有一个当前时间的时间戳,服务端接收并解密该时间戳,检查它并将其与服务器的当前时间进行比较。如果时差大于时差(如3分钟),则认为请求无效。