浅谈网络支付加密安全流程思路(安全性极高)

在阐述我的思路之前,我们先了解以下几点。

一、公网不安全

如果我们使用公网上网,我们的ip是由公网发放的。当我们并发送请求时,公网的拥有者可以在路由端设置拦截器,以此来对你向服务器发送的数据进行拦截,从而对你的数据进行修改来达成某种意图(如果客户端的加密足够好,那么风险会小很多) 。而服务器返回给客户端的数据同样可以被拦截。

若使用我们自己的移动流量上网,我们手机在一个城市的ip地址是固定的,并且ip是由移动公司路由端进行分配的,可以说风险是相当小的。

而当我们连接A热点上网时,我们的ip是由A的ip分发的子网ip地址,如果A在他的手机上设置拦截器的话,依旧会对我们造成一定的威胁。

二、对称加密:文件加密和解密使用相同的密钥加密

三、非对称加密:公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有      密 钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

四、MD5:它是一种信息摘要算法,它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串(这个特殊的字符串就被称之为摘要),并且一个文件所对应的MD5是固定的,当文件内容变化后,其MD5值也会不一样(虽然理论上来说也有可能会一样,但概率极小)。因为MD5不可解密的特性,所以我们常将接收到的数据转MD5与原MD5进行比较判断是否被人篡改。

加密流程思路

一、防止被中途拦截数据进行恶意操作

最开始我想使用对称加密技术,但是对称加密的数据多次发送,也容易被研究出一定的规律,从而可以被黑客在不破坏加密数据原有的规律性的前提下,对实际数据进行修改。

而非对称加密技术因为可以被解密,依然有规律可循,存在风险。

这时,我们想到用MD5判断是否被篡改。

1.服务器向客户端传递公钥,客户端用公钥进行加密。(若被拦截修改,那么加密产生的字符串发生改变,自然无法用密钥进行相应的解密)

2.客户端将原字符串转换为MD5摘要,和公钥加密生成的字符串一起返回服务器。

3.服务器将接收到的字符串用密钥进行解密生成A字符串,再将A字符串按照MD5规则转换成B字符串,最后将B字符串与客户端传递过来的MD5进行比对,若相同,则信息未被修改。

二、防止被恶意多次提交

1.我们先用拦截器直接拦截,比如说若每秒提交次数超过十次以上,则判断为恶意攻击,进行拦截。

2.首先我们要知道,在我们打开支付页面时,客户端往浏览器传递了一个订单号,存在Redis当中。若有两个相同的支付请求同时到达,则选择其中之一。该请求响应成功后,清除刚刚存储的订单号,而之后到来的支付请求因为没有对应的订单号,则无法继续进行操作。而支付页面若迟迟没有支付,或者支付页面关闭,订单号过一段时间后也会自动清除。

猜你喜欢

转载自blog.csdn.net/qq_36470686/article/details/83793239