服務(wù)器與api接口安全嗎 服務(wù)端api

08.如何保證API接口的安全性問題01

1.互聯(lián)網(wǎng)Api接口到底如何保證安全性問題?

公司主營業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出福海免費(fèi)做網(wǎng)站回饋大家。

2.代碼落地實(shí)戰(zhàn)防御XSS、CSRF攻擊

3.代碼落地如何防御接口數(shù)據(jù)被黑客抓包篡改?

4.接口數(shù)據(jù)加密對(duì)稱還是非對(duì)稱加密好

XSS攻擊通常指的是通過利用 網(wǎng)頁 開發(fā)時(shí)留下的漏洞,通過巧妙的方法注入惡意指令代碼到網(wǎng)頁,使用戶加載并執(zhí)行攻擊者惡意制造的網(wǎng)頁程序。這些惡意網(wǎng)頁程序通常是JavaScript,但實(shí)際上也可以包括 Java 、 VBScript 、 ActiveX 、 Flash 或者甚至是普通的HTML。攻擊成功后,攻擊者可能得到包括但不限于更高的權(quán)限(如執(zhí)行一些操作)、私密網(wǎng)頁內(nèi)容、會(huì)話和cookie等各種內(nèi)容。 [1]

腳本攻擊:利用JavaScript 注入 到后臺(tái)數(shù)據(jù)庫中,在通過展示數(shù)據(jù)加載該腳本 該腳本中(

1.使用js獲取cookie信息(jwt)

2.將該jwt數(shù)據(jù) 上傳黑客服務(wù)器(ajax)

獲取jwt---用戶會(huì)話信息 讓后模擬請(qǐng)求形式使用該jwt登錄。

xss攻擊典型網(wǎng)站:論壇、評(píng)論區(qū)

前端傳遞 js 腳本到服務(wù)器端

后端接口將該腳本存放數(shù)據(jù)庫中

前端html

將用戶前端所提交的參數(shù)進(jìn)行過濾。

html 大于 小于號(hào)

該方式的缺陷:每個(gè)參數(shù)都需要像這樣寫 代碼非常冗余

接口接受參數(shù) ?傳遞參數(shù)形式---

傳遞參數(shù)都是json數(shù)據(jù)形式

spring mvc 接受 json數(shù)據(jù)提供 api回調(diào)

1.可以使用第三方抓包工具,對(duì)請(qǐng)求前后實(shí)現(xiàn)代理,可以修改參數(shù)請(qǐng)求內(nèi)容和參數(shù)響應(yīng)內(nèi)容,抓包工具h(yuǎn)ttp調(diào)試工具

2.Fiddler4下載地址:

使用Fiddler4篡改請(qǐng)求之前:

使用MD5可以直接驗(yàn)證簽名參數(shù) MD5 屬于單向加密,只能夠暴力破解。

MD5應(yīng)用場(chǎng)景 在nacos分布式配置中心中,使用MD5 比對(duì)文件內(nèi)容是否發(fā)生改變

HasherPro比對(duì)文件內(nèi)容是否發(fā)生改變。

MD5在線暴力破解地址:

String userName= "123456" ;

System. out .println( DigestUtils. md5Hex (userName));

黑客如何破解?自己需要根據(jù)參數(shù)內(nèi)容 生成簽名

如果只是改了參數(shù)內(nèi)容---沒有用的 所以我們需要該簽名

{"password":"123456","phoneNumber":"phoneNumber","channel":"安卓","equipment":""}

{sign=325ab041d4889825a46d1e1e802ab5de, timestamp=1652537015771}

你開放的API接口真的安全嗎

你開放的接口真的就很安全嗎,看看有沒有做到如下幾點(diǎn)

1.請(qǐng)求身份驗(yàn)證

2.請(qǐng)求參數(shù)校驗(yàn)

3.請(qǐng)求是否唯一

4.請(qǐng)求次數(shù)限制

請(qǐng)求身份驗(yàn)證

基于 AccessKey:為接口調(diào)用放分配AccessKey和SecretKey(不參與傳輸,只用于本地接口加密,不能泄露)

基于token身份驗(yàn)證:

1.用戶登錄提供認(rèn)證信息(如:賬號(hào)密碼)服務(wù)器驗(yàn)證成功后將用戶信息保存到token內(nèi)并設(shè)置有效期,再返回token給調(diào)用方

2.調(diào)用方保存token,并在有效期內(nèi)重新?lián)Q取token,保證token是有效的

3.服務(wù)器驗(yàn)證token有效性,無效則攔截請(qǐng)求返回錯(cuò)誤信息,反之則從token內(nèi)獲取用戶信息進(jìn)行后續(xù)操作

請(qǐng)求參數(shù)校驗(yàn)

1.校驗(yàn)參數(shù)合理性(如:參數(shù)類型,參數(shù)長度,參數(shù)值校驗(yàn))

2.防止XSS,SQL注入(解決方案:過濾敏感字符或直接返回錯(cuò)誤信息)

3.校驗(yàn)參數(shù)可靠性是否被篡改(可以將參數(shù)以特定格式排列+秘鑰組成字符串,在進(jìn)行MD5或SHA簽名)

請(qǐng)求是否唯一

前面第3點(diǎn)解決了請(qǐng)求參數(shù)被篡改的隱患,但是還存在著重復(fù)使用請(qǐng)求參數(shù)偽造二次請(qǐng)求的隱患

timestamp+nonce方案

nonce指唯一的隨機(jī)字符串 ,用來標(biāo)識(shí)每個(gè)被簽名的請(qǐng)求。通過為每個(gè)請(qǐng)求提供一個(gè)唯一的標(biāo)識(shí)符,服務(wù)器能夠防止請(qǐng)求被多次使用(記錄所有用過的nonce以阻止它們被二次使用)。

然而,對(duì)服務(wù)器來說永久存儲(chǔ)所有接收到的nonce的代價(jià)是非常大的??梢允褂胻imestamp來優(yōu)化nonce的存儲(chǔ) 。

假設(shè)允許客戶端和服務(wù)端最多能存在15分鐘的時(shí)間差,同時(shí)追蹤記錄在服務(wù)端的nonce集合。當(dāng)有新的請(qǐng)求進(jìn)入時(shí),首先檢查攜帶的timestamp是否在15分鐘內(nèi),如超出時(shí)間范圍,則拒絕,然后查詢攜帶的nonce,如存在已有集合,則拒絕。否則,記錄該nonce,并刪除集合內(nèi)時(shí)間戳大于15分鐘的nonce(可以使用redis的expire,新增nonce的同時(shí)設(shè)置它的超時(shí)失效時(shí)間為15分鐘)。

請(qǐng)求次數(shù)限制

某些資源我們需要限制用戶的請(qǐng)求次數(shù),同時(shí)也為了防止非人為操作可能導(dǎo)致系統(tǒng)的崩潰

實(shí)現(xiàn)思路如下:

假如我們?cè)试S用戶每秒鐘最多10次請(qǐng)求,超過10次則返回“手速太快了,慢點(diǎn)把。?!?/p>

這里我們使用redis輔助我們實(shí)現(xiàn):

以用戶IP為key,請(qǐng)求次數(shù)為value,有效時(shí)間為1秒

用戶在每秒的第一次訪問的時(shí)候,此時(shí)我們的redis是沒有key為用戶ip的數(shù)據(jù)的(因?yàn)槭Я耍蛘叩谝淮握?qǐng)求)所以我們要初始化當(dāng)前請(qǐng)求用戶的ip為keyvalue為0到redis數(shù)據(jù)庫

當(dāng)用戶在1s內(nèi)再次發(fā)起請(qǐng)求我們就將此ip的請(qǐng)求次數(shù)+1,并判斷請(qǐng)求次數(shù)是否已近=10

=10則返回給用戶手速太快了!請(qǐng)稍后重試..否則繼續(xù)執(zhí)行后續(xù)操作

具體實(shí)現(xiàn)代碼如下:

如有疑問可在下方留言,我會(huì)盡快答復(fù),或者關(guān)注公眾號(hào) 程序員MuziDong 隨時(shí)了解新的動(dòng)態(tài)

開放平臺(tái)API接口安全性設(shè)計(jì)——微信支付為例

API接口,類似 ;mch_id=123 ,這個(gè)請(qǐng)求我以商戶mch_id=123的身份給訂單號(hào)為order_id=123退款,如果服務(wù)器不辯別請(qǐng)求發(fā)起者的身份直接做相應(yīng)的操作,那是及其危險(xiǎn)的。

一般的,在PC端,我們是通過加密的cookie來做會(huì)員的辨識(shí)和維持會(huì)話的;但是cookie是屬于瀏覽器的本地存儲(chǔ)功能。APP端不能用,所以我們得通過token參數(shù)來辨識(shí)會(huì)員;而這個(gè)token該如何處理呢?

延伸開來,接口的安全性主要圍繞Token、Timestamp和Sign三個(gè)機(jī)制展開設(shè)計(jì),保證接口的數(shù)據(jù)不會(huì)被篡改和重復(fù)調(diào)用。

一般來說,在前端對(duì)數(shù)據(jù)做加密或者前面,是不現(xiàn)實(shí)的。前后端使用HTTP協(xié)議進(jìn)行交互的時(shí)候,由于HTTP報(bào)文為明文,所以通常情況下對(duì)于比較敏感的信息可以通過在前端加密,然后在后端解密實(shí)現(xiàn)"混淆"的效果,避免在傳輸過程中敏感信息的泄露(如,密碼,證件信息等)。不過前端加密只能保證傳輸過程中信息是‘混淆’過的,對(duì)于高手來說,打個(gè)debugger,照樣可以獲取到數(shù)據(jù),并不安全,所謂的前端加密只是稍微增加了攻擊者的成本,并不能保證真正的安全。即使你說在前端做了RSA公鑰加密,也很有可能被高手獲取到公鑰,并使用該公鑰加密數(shù)據(jù)后發(fā)給服務(wù)端,所以務(wù)必認(rèn)為前端的數(shù)據(jù)是不可靠的,服務(wù)端要加以辯別。敏感信息建議上https。

所以一般建議上https,敏感信息md5混淆,前端不傳輸金額字段,而是傳遞商品id,后端取商品id對(duì)應(yīng)的金額,將金額等參數(shù)加簽名發(fā)送到支付系統(tǒng)。金額可以是明文的。

token授權(quán)機(jī)制 :用戶使用用戶名密碼登錄后,后臺(tái)給客戶端返回一個(gè)token(通常是UUID),并將Token-UserId鍵值對(duì)存儲(chǔ)在redis中,以后客戶端每次請(qǐng)求帶上token,服務(wù)端獲取到對(duì)應(yīng)的UserId進(jìn)行操作。如果Token不存在,說明請(qǐng)求無效。

弊端 :token可以被抓包獲取,無法預(yù)防MITM中間人攻擊

用戶每次請(qǐng)求都帶上當(dāng)前時(shí)間的時(shí)間戳timestamp,服務(wù)器收到請(qǐng)求后對(duì)比時(shí)間差,超過一定時(shí)長(如5分鐘),則認(rèn)為請(qǐng)求失效。時(shí)間戳超時(shí)機(jī)制是防御DOS攻擊的有效手段。

將token,timestamp等其他參數(shù)以字典序排序,再加上一個(gè)客戶端私密的唯一id(這種一般做在服務(wù)端,前端無法安全保存這個(gè)id)或使用私鑰簽名,將前面的字符串做MD5等加密,作為sign參數(shù)傳遞給服務(wù)端。

地球上最重要的加密算法:非對(duì)稱加密的RSA算法。公鑰加密的數(shù)據(jù),可以用私鑰解密;私鑰簽名(加密)的數(shù)據(jù),可以用公鑰驗(yàn)簽。

RSA原理是對(duì)極大整數(shù)做因數(shù)分解,以下摘自維基百科。

暫時(shí)比較忙沒時(shí)間,將于7月29日晚更新。

來更新啦。

微信支付安全規(guī)范,可以查看官方文檔

第1點(diǎn)中,其簽名算法最重要的一步,是在最后拼接了商戶私密的API密鑰,然后通過md5生成簽名,這時(shí)即使金額是明文也是安全的,如果有人獲取并修改了金額,但是簽名字段他是無法偽造的,因?yàn)樗麩o法知道商戶的API密鑰。當(dāng)然,除了微信支付的拼接API生成簽名的方法,我們也可以通過java自帶的security包進(jìn)行私鑰簽名。其中nonce隨機(jī)字符串,微信支付應(yīng)該做了校驗(yàn),可以防止重放攻擊,保證一次請(qǐng)求有效,如果nonce在微信支付那邊已經(jīng)存在,說明該請(qǐng)求已執(zhí)行過,拒絕執(zhí)行該請(qǐng)求。

阮一峰老師的博客-RSA算法原理:

維基百科:

什么是簽名?服務(wù)器和APP之間的API接口和數(shù)據(jù)怎么保證安全

accesstoken是一種方式,早期簡單點(diǎn)的有appid,appkey方式,復(fù)雜一點(diǎn)的可以使用RSA加密。

服務(wù)器和APP直接大部分通過接口調(diào)用,比如用戶列表。/user/list/

post到/user/list/里面有加密的一個(gè)token這個(gè)是驗(yàn)證是不是一個(gè)合法的訪問者。而且現(xiàn)在很多開發(fā)平臺(tái)比如微信。

本文題目:服務(wù)器與api接口安全嗎 服務(wù)端api
URL分享:http://muchs.cn/article22/doheijc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、微信小程序、網(wǎng)站設(shè)計(jì)、小程序開發(fā)、定制網(wǎng)站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)