接口數(shù)據(jù)安全

接口數(shù)據(jù)安全說(shuō)明

我們開(kāi)發(fā)過(guò)程編寫(xiě)接口時(shí)蹋盆,除了要實(shí)現(xiàn)業(yè)務(wù)邏輯傀缩,安全性也是需要考慮的一部分。不僅要保證數(shù)據(jù)傳輸過(guò)程中的安全坷檩,還有考慮數(shù)據(jù)到達(dá)服務(wù)端時(shí)如何識(shí)別數(shù)據(jù) 却音,最后就是數(shù)據(jù)存儲(chǔ)的安全性 。

幾種實(shí)現(xiàn)方式

(1)對(duì)稱加密

  • AES:Advanced Encryption Standard 高級(jí)加密標(biāo)準(zhǔn)矢炼,是下一代的加密算法標(biāo)準(zhǔn)系瓢,速度快,安全級(jí)別高句灌。
  • DES:Data Encryption Standard 數(shù)據(jù)加密標(biāo)準(zhǔn)夷陋,速度較快,適用于加密大量數(shù)據(jù)的場(chǎng)合胰锌。
  • 3DES:Triple DES 是基于DES骗绕,對(duì)一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密,強(qiáng)度更高

(2)非稱加密

  • RSA:由 RSA公司發(fā)明资昧,是一個(gè)支持變長(zhǎng)密鑰的公共密鑰算法酬土,需要加密的文件塊的長(zhǎng)度也是可變的;
  • DSA(Digital Signature Algorithm):數(shù)字簽名算法格带,是一種標(biāo)準(zhǔn)的DSS(數(shù)字簽名標(biāo)準(zhǔn))撤缴;
  • DH(Diffie-Hellman算法,密鑰一致協(xié)議)
  • ECC(橢圓曲線加密算法)

(3)單向加密(非可逆加密)

  • MD5:信息摘要算法
  • SHA:安全散列算法
  • HMAC:散列消息鑒別碼

接口數(shù)據(jù)安全案例

敏感數(shù)據(jù)的安全存儲(chǔ)(如 密碼,手機(jī)號(hào))
  • 密碼:
    要點(diǎn): 無(wú)法逆向解密
    常用方式: 單向加密 + 鹽(鹽在后臺(tái)生成)

  • 手機(jī),身份證等
    要點(diǎn): 需要逆向解密獲取
    常用方式: 對(duì)稱加密

token授權(quán)認(rèn)證機(jī)制

一般是帶有身份認(rèn)證的系統(tǒng),主要的授權(quán)認(rèn)證方案

  • Redis
  • JWT
數(shù)據(jù)加簽驗(yàn)簽

比如對(duì)接外部系統(tǒng)或者系統(tǒng)之間無(wú)同一套身份認(rèn)證體系
數(shù)據(jù)報(bào)文加簽驗(yàn)簽叽唱,是保證數(shù)據(jù)傳輸安全的常用手段 屈呕,它可以保證數(shù)據(jù)在傳輸過(guò)程中不被篡改 。以前我做的企業(yè)轉(zhuǎn)賬系統(tǒng) 棺亭,就用了加簽驗(yàn)簽虎眨。

數(shù)據(jù)加簽 :用Hash算法(如MD5,或者SHA-256)把原始請(qǐng)求參數(shù)生成報(bào)文摘要,然后用私鑰對(duì)這個(gè)摘要進(jìn)行加密专甩,就得到這個(gè)報(bào)文對(duì)應(yīng)的數(shù)字簽名

sign(這個(gè)過(guò)程就是加簽 )钟鸵。通常來(lái)說(shuō)呢,請(qǐng)求方會(huì)把數(shù)字簽名和報(bào)文原文 一并發(fā)送給接收方涤躲。

下面可以看下簡(jiǎn)單的案例分析說(shuō)明

參數(shù)如 ?amount=1000

-- 只有md5
參數(shù) ?amount=1000&sign=md5(amount=1000)
1. 只改參數(shù)明文,如 ?amount=2000&sign=md5(amount=1000)
    NO-通過(guò)不了,sign不一樣
2. 改明文并且也使用md5,如 ?amount=2000&sign=md5(amount=2000)
    OK-可以通過(guò),這樣非常不安全
    
-- md5+秘鑰key(參數(shù)拼接一個(gè)秘鑰key)
參數(shù) ?amount=1000&sign=md5(amount=1000&key=keyabc)
1. 同樣只改參數(shù)明文肯定不行
2. 改明文并且也使用md5,如 ?amount=2000&sign=md5(amount=2000)
    NO-偽造者拿不到這個(gè)key

-- md5+雙向加密(sign為雙向加密密文)(雙向加密指對(duì)稱加密或者非對(duì)稱加密)
參數(shù) ?amount=1000&sign=md5(aes(amount=1000, keyabc))
1. 同樣只改參數(shù)明文肯定不行
2. 改明文并且也使用md5,如 ?amount=2000&sign=md5(amount=2000)
    NO-偽造者拿不到這個(gè)秘鑰
    
當(dāng)然,一般還會(huì)對(duì)sign做一下Base64編碼

https

如果你想對(duì)所有字段都加密的話,一般都推薦使用https協(xié)議 贡未。https其實(shí)就是在http和tcp之間添加一層加密層SSL种樱。

有了https等加密數(shù)據(jù),為什么還需要加簽驗(yàn)簽?

有些小伙伴可能有疑問(wèn)俊卤,加簽驗(yàn)簽主要是防止數(shù)據(jù)在傳輸過(guò)程中被篡改嫩挤,那如果都用了https下協(xié)議加密數(shù)據(jù)了,為什么還會(huì)被篡改呢消恍?為什么還需要加簽驗(yàn)簽?zāi)兀?/p>

數(shù)據(jù)在傳輸過(guò)程中被加密了岂昭,理論上,即使被抓包狠怨,數(shù)據(jù)也不會(huì)被篡改约啊。但是https不是絕對(duì)安全 的哦,還有一個(gè)點(diǎn):https加密的部分只是在外網(wǎng)佣赖,然后有很多服務(wù)是內(nèi)網(wǎng)相互跳轉(zhuǎn)的恰矩,加簽也可以在這里保證不被中間人篡改 ,所以一般轉(zhuǎn)賬類安全性要求高的接口開(kāi)發(fā)憎蛤,都需要加簽驗(yàn)簽

數(shù)據(jù)安全的幾種優(yōu)化

時(shí)間戳timestamp超時(shí)機(jī)制

數(shù)據(jù)是很容易抓包的外傅,假設(shè)我們用了https和加簽,即使中間人抓到了數(shù)據(jù)報(bào)文俩檬,它也看不到真實(shí)數(shù)據(jù)萎胰。但是有些不法者,他根本不關(guān)心真實(shí)的數(shù)據(jù)棚辽,而是直接拿到抓取的數(shù)據(jù)包技竟,進(jìn)行惡意請(qǐng)求(比如DOS攻擊 ),以搞垮你的系統(tǒng)晚胡。

我們可以引入時(shí)間戳超時(shí)機(jī)制 灵奖,來(lái)保證接口安全。就是:用戶每次請(qǐng)求都帶上當(dāng)前時(shí)間的時(shí)間戳timestamp估盘,服務(wù)端接收到timestamp后瓷患,解密,驗(yàn)簽通過(guò)后遣妥,與服務(wù)器當(dāng)前時(shí)間進(jìn)行比對(duì)擅编,如果時(shí)間差大于一定時(shí)間 (比如3分鐘),則認(rèn)為該請(qǐng)求無(wú)效。

使用時(shí)間戳 timestamp+隨機(jī)數(shù)nonce

時(shí)間戳超時(shí)機(jī)制也是有漏洞的爱态,如果是在時(shí)間差內(nèi) 谭贪,黑客進(jìn)行的重放攻擊,那就不好使了锦担〖笫叮可以使用timestamp+nonce方案。

nonce指唯一的隨機(jī)字符串洞渔,用來(lái)標(biāo)識(shí)每個(gè)被簽名的請(qǐng)求套媚。我們可以將每次請(qǐng)求的nonce參數(shù)存儲(chǔ)到一個(gè)“set集合”中,或者可以json格式存儲(chǔ)到數(shù)據(jù)庫(kù)或緩存中磁椒。每次處理HTTP請(qǐng)求時(shí)堤瘤,首先判斷該請(qǐng)求的nonce參數(shù)是否在該“集合”中,如果存在則認(rèn)為是非法請(qǐng)求浆熔。

然而對(duì)服務(wù)器來(lái)說(shuō)本辐,永久保存nonce的代價(jià)是非常大的∫皆觯可以結(jié)合timestamp來(lái)優(yōu)化慎皱。因?yàn)閠imstamp參數(shù)對(duì)于超過(guò)3分鐘的請(qǐng)求,都認(rèn)為非法請(qǐng)求调窍,所以我們只需要存儲(chǔ)3分鐘的nonce參數(shù)的“集合”即可宝冕。

限流機(jī)制

對(duì)于核心業(yè)務(wù)的接口,結(jié)合業(yè)務(wù)我們判斷某一段時(shí)間內(nèi)可以接受多少次請(qǐng)求邓萨。避免第三方惡意頻繁調(diào)用接口地梨,我們就可以采用限流機(jī)制〉蘅遥可以使用Guava的RateLimiter單機(jī)版限流宝剖,也可以使用Redis分布式限流,還可以使用阿里開(kāi)源組件sentinel限流歉甚。

黑/白名單機(jī)制

系統(tǒng)可以設(shè)置黑白名單万细,設(shè)置黑名單限制惡意請(qǐng)求的用戶或者IP,白名單對(duì)信任的用戶或IP放心纸泄。我們?cè)谂c第三方支付渠道對(duì)接時(shí)赖钞,比如銀聯(lián),與他們接口進(jìn)行交互時(shí)聘裁,需要先申請(qǐng)網(wǎng)絡(luò)白名單雪营,銀聯(lián)將我們業(yè)務(wù)系統(tǒng)的外網(wǎng)IP加入到他們的白名單中,我們才能訪問(wèn)他們的服務(wù)衡便。

微信和支付寶

微信和支付寶采用的基本上都是數(shù)據(jù)加簽驗(yàn)簽的方式,并且都已封裝到SDK中
當(dāng)然也并不是只有一種方式,比如微信的微信支付一般采用的是 SHA + RSA, 微信服務(wù)號(hào)和小程序用的又是access_token的方式.
具體還得看對(duì)應(yīng)文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末献起,一起剝皮案震驚了整個(gè)濱河市洋访,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谴餐,老刑警劉巖姻政,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異岂嗓,居然都是意外死亡汁展,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門厌殉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)善镰,“玉大人,你說(shuō)我怎么就攤上這事年枕。” “怎么了乎完?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵熏兄,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我树姨,道長(zhǎng)摩桶,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任帽揪,我火速辦了婚禮硝清,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘转晰。我一直安慰自己芦拿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布查邢。 她就那樣靜靜地躺著蔗崎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扰藕。 梳的紋絲不亂的頭發(fā)上缓苛,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音邓深,去河邊找鬼未桥。 笑死,一個(gè)胖子當(dāng)著我的面吹牛芥备,可吹牛的內(nèi)容都是我干的冬耿。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼门躯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼淆党!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤染乌,失蹤者是張志新(化名)和其女友劉穎山孔,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體荷憋,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡台颠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了勒庄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片串前。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖实蔽,靈堂內(nèi)的尸體忽然破棺而出荡碾,到底是詐尸還是另有隱情,我是刑警寧澤局装,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布坛吁,位于F島的核電站,受9級(jí)特大地震影響铐尚,放射性物質(zhì)發(fā)生泄漏拨脉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一宣增、第九天 我趴在偏房一處隱蔽的房頂上張望玫膀。 院中可真熱鬧,春花似錦爹脾、人聲如沸帖旨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)碉就。三九已至,卻和暖如春闷串,著一層夾襖步出監(jiān)牢的瞬間瓮钥,已是汗流浹背烹吵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工肋拔, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琼梆。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓茎杂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親倾哺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刽脖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容