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