0%

####由于开放型的短信接口受到不明来源的恶意访问 大佬们紧急对整个项目的接口进行加密
原理:密钥+参数生成 md5 签名 客户端保存好密钥即可 之前对接苏宁易购的那个支付平台的时候 也是选择这种方式进行访问加密
1:生成密钥
这个随机定义 例如我选择使用 appId + salt 生成md5 截取前12位作为 指定app应用的密钥 如果发生泄漏 可以通过改变salt 来生成新的密钥
2:客户端密钥 存储
客户端 拿到密钥不能明文存储 例如 12位 可以拆分三段 然后分别进行偏移 这样如果别人要识别 必须反编译源码 并且读懂相关规则
3:签名规则
除开签名以外所有参数 按照排序规则排序 然后拼接上密钥 通过md5 或者类似的算法生成md5签名
4:服务端验证规则
除开签名 也按照客户端同样的排序规则排序 拼接密钥 通过相同的算法生成服务端签名 通过比较客户端签名 和服务端签名 来验证服务是否可靠、

生成签名 方法示例

阅读全文 »

##在将项目前后端分离的时候,首当其冲的就是跨域问题;此篇笔记 用来记录什么是跨域、如何解决跨域、以及一个实例;免得自己以后忘记了还需要去搜索
###什么是跨域
http为了提高安全,禁止非同域访问
什么是同域:满足下三条才是同域 1:同端口 ip,2:同样的协议,3:如果是子域名 也要一样 否则就是非同域 不能直接互相访问,必须通过一些安全设置或者技巧去访问如jsonp、cors等方案
###解决跨域
####1:jsonp 方式
首先jsonp和json是没有任何关系的 ;
由于浏览器对js、图片不会做跨域限制
jsonp就是相当于把数据下载下来解析,利用script标签去下载数据 然后解析
就是用javascript动态加载一个script文件,如何去解析这个文件 例如json字符串
######局限性:只能get请求 如果需要post、put等其他请求 无法满足

###2:cors跨域(重点)
cors是w3c定义的一种新的标准 用来适应跨域数据请求的
当浏览器发现是跨域请求 会自动在报头添加一些跨域信息 如option等
cors跨域分为简单请求和负责请求 但是只要在服务端设定合适 区别不是特别大
当满足如下条件就是简单的cors跨域请求 不满足则是复杂cors请求
1:请求方式:get、post、head
2:报头限制:只能包含如下报头信息 超过则是复杂请求Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain|
也就是意味者如果要自定义报头、发送cookie等功能 都是复杂请求
不管是复杂请求还是简单请求 在服务端设置的时候 复杂请求设置是涵盖了简单请求需要的设置的
######简单cors跨域

阅读全文 »