鍍金池/ 問(wèn)答/HTML5  Java  PHP/ HTML5頁(yè)面與API接口交互,有什么好的安全方案嗎?

HTML5頁(yè)面與API接口交互,有什么好的安全方案嗎?

我的一個(gè)想法是用后端語(yǔ)言PHP搭建個(gè)http服務(wù),html5把要傳遞的參數(shù)提交給php,php加密后傳遞給api,返回的數(shù)據(jù)解密后返回給html5,中間多了一層中轉(zhuǎn),主要是為了參數(shù)加密,簡(jiǎn)單的參數(shù)簽名html5根本做不了

回答
編輯回答
失心人

h5 就別想怎么加密參數(shù)了,現(xiàn)在應(yīng)該還沒(méi)有一個(gè)完整的解決方案。如果有的話,請(qǐng)留言讓我也學(xué)習(xí)一下。
就你的說(shuō)法,我舉個(gè)栗子:

# 正常
   參數(shù)
h5 ===> api ==> 返回?cái)?shù)據(jù)
# 樓樓的想法
    參數(shù)          加密
h5 ===> php中間層 ===> api ==> 返回?cái)?shù)據(jù)
# 在搗亂的人請(qǐng)求你的接口時(shí),根本不知道有 php 中間層,他們請(qǐng)求你的中間層返回?cái)?shù)據(jù)
    參數(shù)     
h5 ===> php中間層  ==> 返回?cái)?shù)據(jù)

你想一下:你既然在 h5 傳參數(shù)到 php 中間層加密,然后再通過(guò)請(qǐng)求 api,那么,想亂來(lái)的人,就可以直接認(rèn)為你的 php 中間層是 api 了,我請(qǐng)求 php 中間層就可以得到數(shù)據(jù)了
除非你能像 app 那樣,看不到源碼,自己寫一套加密簽名,別人根本不知道你用什么加密,不知道怎么傳遞參數(shù)。
而 h5 不一樣,我 f12 大法,一看就知道你用什么簽名方式,總是可以偽造。而你一點(diǎn)辦法都沒(méi)有。
正確的做法:

  1. 就像你說(shuō)的,做一個(gè) sign 校驗(yàn)參數(shù)
  2. 重要的接口需要登錄才能訪問(wèn)。
  3. 節(jié)流限制訪問(wèn)次數(shù)
2017年5月1日 07:01
編輯回答
墨沫

你的需求是希望實(shí)現(xiàn)數(shù)據(jù)的加密傳輸嗎?

首先數(shù)據(jù)(也就是你說(shuō)的參數(shù))在從瀏覽器(H5)發(fā)送到服務(wù)端(PHP)就已經(jīng)暴露在外了,PHP加密再傳給api已經(jīng)是無(wú)用功了(如果api處于服務(wù)端本地局域網(wǎng)內(nèi))

你可以用https來(lái)實(shí)現(xiàn)數(shù)據(jù)加密傳輸,可以防止網(wǎng)絡(luò)中的數(shù)據(jù)被截獲。

2018年8月5日 15:30