javascript - ajax API 怎么做安全验证?

查看:123
本文介绍了javascript - ajax API 怎么做安全验证?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在web中,使用Ajax调用API,怎么做安全验证,防止别的网站调用呢?

如果是APP调用要怎么解决接口安全问题呢?还有API怎么样才能不暴露在公网上呢?只要的的APP能调用,不都算暴露在公网上吗?

解决方案

ajax 跨域解决不了问题,跨域可以通过服务端模拟请求发送获取ajax的数据

有两种方法,但基本类似,一种是请求头,一种是页面添加input token 但是这两种方法前面主要的问题是要把token加密
比如 token = md5(IP + 随机数 + 时间戳 + UID + session_secret) 其实里面的内容自己定义就好,主要是加密

将加密的内容放入session中 , session要设置过期时间

1、请求头的话

加入access_token 请求头, 在后台获取去请求头的内容,然后跟session中的值比较, 如果争取就证明没问题,然后session就失效了。

2、跟请求头类似,但是加密的值放到 input hidden 里面, ajax提交的时候获取这个值放到参数里面

回答你后面的APP的问题

APP能访问肯定是要在公网上的,目前我们的安全方案是参数加密

比如说 要提交 a=1&n=2

那么实际提交的时候要 对参数进行加密, mid=xxx&a=1&b=2&sign=md5(' mid=xxx&a=1&b=2'+密钥)

mid表示一个客户端调用接口的账户, 账户对应一个密钥

服务器端每次要检验提交的参数是否正确 也就是最后的sign这个参数

还有重要的一点就是客户端的要是原生APP, 代码必须混淆加密,防止反编译。然后这个密钥的话定期更换,随着版本更新更换密钥

还有一种方法是在提交参数之前先将所有要提交的参数 请求一个加密的地址 这个地址会根据你的参数返回一个加密的token ,你带着这个token 再提交实际的参数, 后端去进行验证

这个方法的缺点就是要多进行一次网络请求,只适用于混合应用

这些也是我看其他博客学习来的,也不知道淘宝,京东这样的APP的接口是怎么处理的

这篇关于javascript - ajax API 怎么做安全验证?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆