Bootstrap

使用MD5加密确定前台传输数据是否有效

1、前台数据传输

当前台给后台传输数据时,除了最基本的参数,还需要传输一个根据参数以MD5形式生成的一个签名。

例如参数为:

{"a" : 1, "b" : 2, "c" : 3}

那么我们将数据拼成一个如下的字符串

a=1&b=2&c=3

但是除了这些参数,我们还要在前后台统一一个key,作为混淆

例如使用"key" = "jinx",也将其拼入字符串

结果为:a=1&b=2&c=3&key=jinx

将这个字符串通过js进行MD5加密,会生成一个字符串,我们将此字符串(假设为"str")也拼入参数,结果为

{"a" : 1 , "b" : 2 , "c" : 3 , "sign" : "str"}

我们将此数据传入后台

 

2、后台验证数据是否合法

在后台,我们将传来的数据(除sign之外)在此进行md5,加密,key与前台相等

这样我们在后台也将生成一个sign签名,然后将此签名与前台传过来的sign相比,如果相等,则有效,反之则无效。

 

3、个人认为的优点与缺陷

在这种情况下,不正常操作(例如:直接调用接口或者在传输中篡改数据)这种会修改参数的情况下,即使参数被改变,但是sign值是不可能改变的。所以后台会不接受此参数。

但是我认为问题在于,在浏览网页时,是可以看到网页所使用的js文件的,不知道这样会不会导致MD5算法泄露问题,这个问题有待思考。

 

;