Heim >Backend-Entwicklung >PHP-Tutorial >javascript - 服务端php的base64_encode加密后推到前端js解密后中文乱码

javascript - 服务端php的base64_encode加密后推到前端js解密后中文乱码

WBOY
WBOYOriginal
2016-06-06 20:34:051657Durchsuche

今天看了一段代码,实现的功能如下:

  1. 服务端php调用底层命令,将返回结果用base64_encode加密
  2. 前端js通过GET方法调用上述php获取经过加密的文本用下面的解密函数解密,英文没问题,但是中文乱码。
<code>        decode_base64_str:function (s) {
                var e={},i,k,v=[],r='',w=String.fromCharCode;
                var n=[[65,91],[97,123],[48,58],[43,44],[47,48]];

                for(z in n){for(i=n[z][0];i<n for var b="0,c,x,l=0,o=s.substring(i,i+72);" c="e[o.charAt(x)];b=(b<<6)+c;l+=6;" while>=8){r+=w((b>>>(l-=8))%256);}
                        }
                }
                return r;
        },
</n></code>

问题:

  1. 如果不经过这个加密解密过程中文显示没问题,但是是不是会有什么风险?
  2. 要完美实现解密中文,上述解密函数那个地方不对?

修正一下,js与php之间通过GET传递,直接传递的是encode后的字符串

PS:关于是否有必要用base64_encode我也不确定,我说的风险不是传递内容的泄露,而是是否存在诸如注入之类的风险,目前我知道的注入应该是前端提交给后端的时候发生,其他的不是很熟。

回复内容:

今天看了一段代码,实现的功能如下:

  1. 服务端php调用底层命令,将返回结果用base64_encode加密
  2. 前端js通过GET方法调用上述php获取经过加密的文本用下面的解密函数解密,英文没问题,但是中文乱码。
<code>        decode_base64_str:function (s) {
                var e={},i,k,v=[],r='',w=String.fromCharCode;
                var n=[[65,91],[97,123],[48,58],[43,44],[47,48]];

                for(z in n){for(i=n[z][0];i<n for var b="0,c,x,l=0,o=s.substring(i,i+72);" c="e[o.charAt(x)];b=(b<<6)+c;l+=6;" while>=8){r+=w((b>>>(l-=8))%256);}
                        }
                }
                return r;
        },
</n></code>

问题:

  1. 如果不经过这个加密解密过程中文显示没问题,但是是不是会有什么风险?
  2. 要完美实现解密中文,上述解密函数那个地方不对?

修正一下,js与php之间通过GET传递,直接传递的是encode后的字符串

PS:关于是否有必要用base64_encode我也不确定,我说的风险不是传递内容的泄露,而是是否存在诸如注入之类的风险,目前我知道的注入应该是前端提交给后端的时候发生,其他的不是很熟。

<code>php</code><code>$base = base64_encode(urlencode('中文'));//JUU0JUI4JUFEJUU2JTk2JTg3

console.log(decodeURIComponent(decode_base64_str('JUU0JUI4JUFEJUU2JTk2JTg3')));//中文
</code>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn