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算法泄露问题,这个问题有待思考。