http的接口,怎么设计安全特性

tianxia007 发布于 2016/09/11 17:59
阅读 2K+
收藏 6
各位大神,jfinal开发的web系统,其中部分http的接口,怎么设计安全特性,很重要的接口
加载中
2
JFinal
JFinal

    首先通道要安全,所以,起码你要使用 https,因为 http 是明文传输数据,数据可以被监听。在 https 基础之上做好身份证明就可以了。

    身份认证可以这样做:

1:客户端请求时首先需要登录,登录成功以后,服务端返回一个 access token 值,这个值设置一个合理的过期时间,过期以后需要再次登录。

2:客户端请求时,带上前面获取到的这个 access token 值,服务通过该值登录缓存获取用户身份,根据用户身份授权/控制当前的请求

   微信开放平台、公众号阿里平台都是这么做的

JFinal
JFinal
回复 @tianxia007 : 系统都是层次性的,加密也是在单独的 https 层,业务层就只管业务
JFinal
JFinal
回复 @tianxia007 : 通道走的 https,本身就是被加密过的,不需要自己处理
tianxia007
tianxia007
回复 @JFinal : 传输中这个token怎么加密校验 波总
JFinal
JFinal
回复 @tianxia007 : 客户端在登录成功时,服务端创建一个 access_token,并以这个 access_token 值为 key,以用户信息为 value,存放在缓存中: cache.put(accessToken, userAccount),用户每次请求过来时,只需要通过 cache.get(accessToken) 取,就知道用户身份了
tianxia007
tianxia007
谢谢
0
天涯海角难寻觅
天涯海角难寻觅
接口传输信息加密可以考虑试试....
rwrqrwr
rwrqrwr
回复 @tianxia007 : 同求,好的加密方案
tianxia007
tianxia007
加密算法推荐
0
f
freezingsky
走https,然后对接口访问进行授权 ,再添加token的有效性检查 。
tianxia007
tianxia007
谢谢
0
Eric_林
Eric_林
客户端关键数据加密,每次调用根据参数、时间戳签名,服务器验签,access token什么的,本质上都是用于签名、验签的
0
红魔小贝
红魔小贝

引用来自“JFinal”的评论

    首先通道要安全,所以,起码你要使用 https,因为 http 是明文传输数据,数据可以被监听。在 https 基础之上做好身份证明就可以了。

    身份认证可以这样做:

1:客户端请求时首先需要登录,登录成功以后,服务端返回一个 access token 值,这个值设置一个合理的过期时间,过期以后需要再次登录。

2:客户端请求时,带上前面获取到的这个 access token 值,服务通过该值登录缓存获取用户身份,根据用户身份授权/控制当前的请求

   微信开放平台、公众号阿里平台都是这么做的

http是无状态的协议,服务器通过客户端的cookie识别客户身份建立会话。这个机制本身就是不安全的。https只是对传输数据进行加密,也摆脱不了协议本身的不安全点,而且加密意味的速率,https的普遍应用场景是付款级别的,一般的商业应用https满足不了性能。你可以采用重写会话标识,一般是jsessionid建立自己的会话绑定用户本地信息,再加上系统的认证策略可以满足性能和安全的需求。但也不是绝对的
JFinal
JFinal
jessionId 与使用了 httponly 后的 cookie 安全性几乎是相同的,通道不安全,无论是 jessionId 还是 cookie 都能被监听
0
54mark
54mark
授权token+请求签名/验签+https
54mark
54mark
回复 @554330833a : 授权token,是为了请求接口权限的,类似登陆后才可请求。签名是参数加密。如果都有请求接口的权限,可以不用授权token。
554330833a
554330833a
@54mark 这个跟授权token 好像没什么区别吧?
54mark
54mark
回复 @554330833a : 参数通过加密算法得到的一个字符串。。
554330833a
554330833a
请求签名/验签 签名是指什么
0
luokery
luokery

1.如果是系统间调用(如:webservice), 可以使用加密方式, 服务端给个密钥, 你用这个密钥加密数据然后,附上客户端标识提交给服务器. 服务器通过明文的客户端标识找到你的密钥进行解密, 然后获取数据.(多渠道的情况, 如果是单渠道, 客户端标识都可以不用)

2.http页面调用, 可以参考JFinal, 使用https之类.

0
zhangdedezhu
zhangdedezhu

1. 身份验证阶段,你可以用非对称加密算法来确保token的安全

2.数据传输阶段,可以用token + 对称算法 + https 来确保数据的安全

poorfish
poorfish
回复:@poorfish a
poorfish
poorfish
同意
0
12叔
12叔
https +token +签名 之类的

返回顶部
顶部