1. 程式人生 > >使用MD5加密確定前臺傳輸資料是否有效

使用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演算法洩露問題,這個問題有待思考。