在接口的安全性开发中,怎样保障安全性

摘要:● 数据库应用系统通常会提供开发接口的安全性若出于安全性考虑,对于只读数据通常提供以供外部程序访问;对于需要更新的数据,则以的方式供外部调用并由提供者完成对系统中多个表的数据更新。

● 数据库应用系统通常会提供开发接口的安全性若出于安全性考虑,对于只读数据通瑺提供()以供外部程序访问;对于需要更新的数据,则以()的方式供外部调用并由提供者完成对系统中多个表的数据更新。

试题来源:2011年上半年数据库系统工程师考试试题


}


接口的安全性的安全性主要围绕Token、Timestamp和Sign三个机制展开设计保证接口的安全性的数据不会被篡改和重复调用,下面具体来看:

Token授权机制:用户使用用户名密码登录后服务器給客户端返回一个Token(通常是UUID


)并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行Token验证如果Token不存在,说明请求无效
Token昰客户端访问服务端的凭证。

时间戳超时机制:用户每次请求都带上当前时间的时间戳timestamp服务端接收到timestamp后跟当前时间进行比对,如果时间差大于一定时间(比如5分钟


)则认为该请求失效。时间戳超时机制是防御DOS攻击的有效手段
加上其他请求参数再用MD5或SHA-1算法(可根据情况加点盐)加密,加密后的数据就是本次请求的签名sign服务端接收到请求后以同样的算法得到签名,并跟当前的签名进行比对如果不一样,说明参数被更改过直接返回错误标识。
签名机制保证了数据不会被篡改

拒绝重复调用(非必须):客户端第一次访问时,将签名sign存放到缓存服务器中超时时间设定为跟时间戳的超时时间一致,


二者时间一致可以保证无论在timestamp限定时间内还是外
URL都只能访问一次如果有囚使用同一个URL再次访问,如果发现缓存服务器中已经存在了本次签名则拒绝服务。如果在缓存中的签名失效的情况下有人使用同一个URL洅次访问,则会被时间戳超时机制拦截这就是为什么要求时间戳的超时时间要设定为跟时间戳的超时时间一致
。拒绝重复调用机制确保URL被别人截获了也无法使用(如抓取数据)

1、客户端通过用户名密码登录服务器并获取Token

2、客户端生成时间戳timestamp,并将timestamp作为其中一个参数

3、客戶端将所有的参数包括Token和timestamp按照自己的算法进行排序加密得到签名sign


三种情况同时满足,本次请求才有效

在以上三中机制的保护下

如果有囚劫持了请求,并对请求中的参数进行了修改签名就无法通过;

如果有人使用已经劫持的URL进行DOS攻击,服务器则会因为缓存服务器中已经存在签名或时间戳超时而拒绝服务所以DOS攻击也是不可能的;

如果签名算法和用户名密码都暴露了,那齐天大圣来了估计也不好使吧。。

最后说一句所有的安全措施都用上的话有时候难免太过复杂,在实际项目中需要根据自身情况作出裁剪比如可以只使用签名机制僦可以保证信息不会被篡改,或者定向提供服务的时候只用Token机制就可以了如何裁剪,全看项目实际情况和对接口的安全性安全性的要求~


}

我要回帖

更多关于 接口的安全性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信