如何设计一个安全的API

鉴于最近公司在对接一些银行机构,结合自己之前对接的一些三方支付机构,下面来谈下这些机构在信息安全网络传输方面都是怎么做的,通过什么具体手段来保证安全问题,下面主要通过以下几个方面进行分析总结下

1、常见的加密、加签算法

2、银行和支付机构的做法

3、安全的核心问题

4、最佳实践

5、安全需要关注的其它问题

一、常见加密、加签算法

image.png

其中算法(国际)列,默认的排序是按照算法的破解难易程度从高到低进行排序,SM2由国家密码管理局于2010年12月17日发布,国密号称安全性优于国际算法,网上找到一篇文章有人验证SM2的加签速度优于RSA,但是验签速度要远远低于RSA,由于未找到权威文章,此处不做结论

二、银行和支付机构的做法

image.png

三、安全的核心问题

1、身份认证问题

一般情况下服务端均会向客户端颁发appId、partnerId等类似于标识用户身份的唯一ID,此ID关联用户密钥,一旦服务端异常或者受到工具,可以追溯来源,调整ID状态或者来强制下线用户

2、 信息泄露问题

信息泄露主要是要控制报文在网络传输中不要明文传输,根据对称和非对称加密算法的特点,目前主流的做法是使用混合加密,主要流程是,服务端创建RSA密钥对,将公钥传输给客户端,同时客户端创建AES密钥,使用AES密钥加密明文得到密文,接着使用公钥加密AES密钥,最后将加密后的AES密钥和密文传输到服务端。服务端使用自己的私钥解密加密后的AES密钥得到AES密钥,接着使用AES密钥解密密文得到明文

3、请求被篡改问题

防止请求被篡改主要是要做好加签和验签,以下图例主要说明RSA的验签过程,及RSA的加密流程

RSA加解密流程.jpg

4、重放攻击问题

黑客监听到请求后,重复请求攻击服务端,服务端如何识别是非法请求

在请求参数中增加timestamp、randomString参数【此参数是从服务端实时请求的】,服务端在接收到请求后timestamp时间戳和服务端相差1分中之内的才放行,接着判断randomString是否已经存在,如果存在则不响应


image.png

四、最佳实践

通过对比以上机构的一些常规做法,以及自己的使用体会,说下我的一些看法

A、尽量提供SDK,完全傻瓜式使用,能极大的缩小接入者的调试成本,以前踩过的坑由于编码或者时区设置问题,导致看似一个简单的问题,花费很大的精力去解决,同样的算法填充方式不一样导致无法解密等等都是走过的血和泪

B、使用JSON方式进行交与,由于相同数据JSON报文要比XML报文小很多,以及JSON报文的可读性强和数据结构展示更加清晰,建议尽量使用JSON、一般银行或者支付机构老系统在沿用XML,基本上已经退出历史舞台了

C、对称加密使用AES、非对称加密使用RSA、摘要算法使用SHA-256、数字签名算法使用SHA256withRSA,因为从理论上来说以上都是目前安全级别最高的算法

D、针对敏感字段的加密能支持一次一密

E、 生产环境一定要使用HTTPS,尽量采用权威CA机构颁发的证书

五、安全需要关注的其它问题

A、越权问题,可能最容易被忽略,此问题应该在系统进行业务层面的校验,如果是网页端含登录态的需要结合登录态来核验用户身份

B、网页端需注意XSS攻击问题

参考链接:

京东支付开放平台:https://payapi.jd.com/

微信支付开放平台:https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/index.shtml

支付宝开放平台:https://docs.open.alipay.com/

工行开放平台:https://open.icbc.com.cn/icbc/apip/docs_index.html

平安开放平台:http://api.pingan.com/dev/index.do?Fpcl1qGdFgeWKps

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,999评论 4 368
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,102评论 1 302
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,709评论 0 250
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,439评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,846评论 3 294
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,881评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,062评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,783评论 0 205
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,517评论 1 248
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,762评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,241评论 1 264
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,568评论 3 260
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,236评论 3 241
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,145评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,941评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,965评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,802评论 2 275

推荐阅读更多精彩内容