javascript - ajax API 怎么做安全验证?
在web中,使用Ajax调用API,怎么做安全验证,防止别的网站调用呢?
如果是APP调用要怎么解决接口安全问题呢?还有API怎么样才能不暴露在公网上呢?只要的的APP能调用,不都算暴露在公网上吗?
回复内容:
在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的接口是怎么处理的
服务器上没有额外设置的话,ajax是无法跨域调用你的api的,你也可以获取请求的域名来判断一下
让你授权的网站才能访问
可以在请求头部加Access-Token
如果是接口性质的api调用,就不要暴露在公网上;如果是前端js用的ajax,那么就要保证用户登录后才能调用,也就是说验证session。
在ajax
请求头里加上token
, 如
<code>$(function() { $.ajax({ type: "GET", url: "godruoyi.com", beforeSend: function(request) { request.setRequestHeader("token", "asdadsadasdasdadadad"); }, success: function(result) { alert(result); } }); });</code>
或者在模板基类加上
<code>$.ajaxSetup({ headers: { 'token' : 'xxxxxxxxxxxx' } });</code>
token
可以从登陆API完成后返回的有效值,这需要你的应用自己设计了, 后续所有请求(若要验证身份, 都带上改token,), 服务端通过该token来标示用户,
有点类似于Oauth2
, 参考oauth2.0

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

登录 CakePHP 是一项非常简单的任务。您只需使用一项功能即可。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。提供了 log() 函数

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写
