十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
JSONXML
公司主营业务:成都网站建设、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出通许免费做网站回馈大家。
XML: 是一种标记语言,设计的宗旨是传输数据
JSON: 轻量级的数据交换格式
APP接口主要是用JSON输出格式
APP接口输出格式三要素:
1. code::错误码
2. msg:错误码对应的描述
3. data:接口返回的数据
谁有权限调用APP接口,客户端需要带着凭证来调用APP接口
JWT的原理:
服务端认证之后,生成一个JSON对象,返回给用户。后续客户端所有请求都会带上这个JSON对象。服务端依靠这个JSON对象来认定用户身份。
组成: Header, Payload, Signature
1. Header
说一下我是什么
header通常包含了两部分:类型和加密算法
{
"alg": "HS256",
"typ": "JWT"
}
header需要经过Base64Url编码后作为IWT的第一部分。
2. Payload
payload包含了claim, 三种类型reserved, public, private
reserved这些claim是JWT预先定义的,不强制使用,常用的有:
1). iss: 签发者
2). exp: 过期的时间戳
3). sub: 面向的用户
4). aud: 接收方
5). iat: 签发时间
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
payload需要经过Base64Url编码后作为JWT的第二部分。
3. Signature
创建签名使用编码后的header和payload以及一个密匙,使用header中指定的签名算法进行签名
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
签名是在服务端进行的,客户端并不知道,所以是安全的。
这个问题很深
安全,不敢当,因为web安全问题很多,不仅仅是PHP编码而已,有很多安全上的问题需要做处理,像服务器漏洞、端口开放都会导致被黑,这都是很正常的。
只能说 比如在我做PHP开发过程的一些安全保护和在网络安全公司开发时的工作要求:
1、最基础的,提供的api接口 要配置https。
2、api返回响应的信息,要尽可能使用消息加密返回,如高位数的 rsa加密内容。
3、接收的回调开放接口,尽可能做到使用回调黑、白名单,如加ip白名单放行,或ip黑名单禁止访问。
4、不要相信用户输入、输入信息要进行编码转换、转义、过滤、使用框架和插件进行处理,如MySQL查询的要进行参数绑定、如显示问题要避免xss攻击会进行过滤。
5、授权操作,错误限制设置阀值、超过阀值限制访问、如最基础的登录功能。
6、常见额弱口令问题导致漏铜,应设置高强度口令,避免程序爆破。
7、文件上传问题、应严格校验文件类型、后缀、格式、及文件目录权限设置,从而避免文件上传漏洞导致恶意代码或webshell攻击。
8、开发环境和生产环境隔开,不要再生产上面开debug、及时更新使用框架漏洞补丁如PHP国内常用 tp系列以前偶尔爆出漏洞(我用的较多就是tp5 ....),还有框架不要用最新要选择最稳定的。
最后注意不管是验证还是过滤,在客户端执行过一次也好,在服务端,都要再次执行验证和校验。
和盛之文 我的文章保存网站,欢迎访问学习或参考
客户端
每一个请求的URL中加上时间的参数。对url中的参数是排序好的。
然后对这个URL进行MD5。将这个MD5作为最后一个参数(sign)拼接到url最后。
服务端
收到请求后,对去掉最后一个参数的url进行md5。得到的md5和参数中的md5进行匹配。如果匹配成功进行正常返回,如果不成功就500
加密
用AES的。
那就要看你想要什么样的效果了,你可以对请求参数进行加密,也可以在请求头部加秘钥等等
这不难啊, 既然你也有例子了,就再细化一下,比如在结果输出后加个表示结束的变量, 或者加个error数量的变量,为0则是没发生错误. 你有什么不明白的?
======
以我做接口的经验,程序主要有几部分:
1.接收数据,验证数据合法性
这你已经有例子了, 就是用get方法,程序直接接收get的query,而支付宝,银行那些网关除了接收这些必要数据外,还会和商户约定一个key,是这字符串, 约定好每次发送的数据通过某种方式,比如连接的方式和这个key组成一个大的字串,再以MD5加密,附上这个hash给接口,用来判断这个请求的合法性,key是事先约定的,商户和接口都知道
2.处理数据
这个没什么好说的,数据入库,计算等等
3.返回数据
如果是以http协议的话,就直接输出header,然后输出
值名=值+换行符
这样的数据就可以了
银行接口网关,财付通,支付宝,域名注册接口我都做过,我只能提示到这里,具体要我做就不是200分的问题了,这需要时间调试