1. 程式人生 > >如何保證HTTP介面請求的安全呢?

如何保證HTTP介面請求的安全呢?

在二家公司負責後臺開發與APP介面開發。

那我們要如何對介面請求進行一個安全校驗或者攔截非法請求吶?

1、選擇攔截過濾器。

在請求的時候對請求方法進行一次攔截處理。比如非正常訪問的方法已經注入插入可執行語句引數驗證等在攔截中進行一次安全校驗保證

請求不是非法請求。

2、資料加密。我們知道目前大部分APP介面都是通過Http協議進行呼叫的容易被抓包攔截。

我們可以對客戶端和服務端都對資料傳輸的時候進行一個加密處理。常用的MD5 AES等。

譬如:上一個專案做法比較簡單 對使用者與帳號密碼進行加密作為一個authcode。每次請求必須攜帶。這個方法與下邊說的方法3組合運用

客戶端:

    1、設定一個key(和伺服器端相同)

    2、根據上述key對請求進行某種加密(加密必須是可逆的,以便伺服器端解密)

    3、傳送請求給伺服器

伺服器端:

    1、設定一個key

    2、根據上述的key對請求進行解密(校驗成功就是「信任」的客戶端發來的資料,否則拒絕響應)

    3、處理業務邏輯併產生結果

    4、將結果反饋給客戶端

3、簽名

 根據使用者名稱或者使用者id,結合使用者的ip或者裝置號,生成一個token。在請求後臺,後臺獲取http的head中的token,校驗是否合法(和資料庫或者Redis中記錄的是否一致,在登入或者初始化的時候,存入資料庫/redis)

在使用Base64方式的編碼後,Token字串還是有20多位,有的時候還是嫌它長了。由於GUID本身就有128bit,在要求有良好的可讀性的前提下,很難進一步改進了。那我們如何產生更短的字串呢?還有一種方式就是較少Token的長度,不用GUID,而採用一定長度的隨機數,例如64bit,再用Base64編碼表示:

    var rnd = new Random();
    var tokenData = userIp+userId;
    rnd.NextBytes(tokenData);
    var token = Convert.ToBase64String(tokenData).TrimEnd('=');

由於這裡只用了64bit,此時得到的字串為Onh0h95n7nw的形式,長度要短一半。這樣就方便攜帶多了。但是這種方式是沒有唯一性保證的。不過用來作為身份認證的方式還是可以的(如網盤的提取碼)。

4、使用第三方框架與技術整合支援比如spring的框架中的oauth模組。


相關推薦

如何保證HTTP介面請求安全

在二家公司負責後臺開發與APP介面開發。 那我們要如何對介面請求進行一個安全校驗或者攔截非法請求吶? 1、選擇攔截過濾器。 在請求的時候對請求方法進行一次攔截處理。比如非正常訪問的方法已經注入插入可執

SpringBoot(1) HTTP介面請求

一、HTTP請求配置講解 簡介:SpringBoot2.x  HTTP請求註解講解和簡化註解配置技巧 1、@RestController和@RequestMapping是springMVC的註解,不是springboot特有的 2、@[email protected][email pr

限制http介面請求次數

思路:利用aop實現根據ip限制一個介面在一段時間內的請求次數 實現方式用了redis,直接設定key的過期時間 先來個註解: import org.springframework.core.Ordered; import org.springframew

python介面http網路請求 返回常見statusCode(狀態碼)解釋

當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在伺服器發出請求。當瀏覽器接收並顯示網頁前,此網頁所在的伺服器會返回一個包含HTTP狀態碼的資訊頭(server header)用以響應瀏覽器的請求。 HTTP狀態碼由三個十進位制數字組成,第一個十進位制數字定義了狀態碼的型別

POST請求模擬工具、JSON請求工具、http介面測試、post介面測試

地址: apiDebug-API介面除錯外掛,開源API介面除錯外掛,Restfull介面除錯軟體,Restfull介面除錯外掛,谷歌API介面除錯外掛,Chrome瀏覽器介面除錯外掛,POST請求模擬外掛,api介面除錯工具,開源介面除錯工具,POST模擬工具

spring boot 開發—第七篇使用JWT保證api介面安全

1、jwt簡介 JWT是一種用於雙方之間傳遞安全資訊的簡潔的、URL安全的表述性宣告規範。JWT作為一個開放的標準(RFC 7519),定義了一種簡潔的,自包含的方法用於通訊雙方之間以Json物件的形式安全的傳遞資訊。因為數字簽名的存在,這些資訊是可信的,JW

JAVA POST請求遠端HTTP介面

package com.oemp.common; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.Outp

JAVA傳送http get/post請求,呼叫http介面、方法

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; impo

訪問Http介面的兩種請求方式

1. POST方式請求 public void testPostLogin() throws Exception{ String url = "http://192.168.1.160:8080/app/user/login.xhtml"; Map<

spring boot 開發—第八篇整合OAuth2保證api介面安全

1、 OAuth 概念 OAuth 是一個開放標準,允許使用者讓第三方應用訪問該使用者在某一網站上儲存的私密的資源(如照片,視訊,聯絡人列表),而不需要將使用者名稱和密碼提供給第三方應用。OAuth允許使用者提供一個令牌,而不是使用者名稱和密碼來訪問他

JAVA傳送http請求,呼叫http介面與方法

1.傳送POST請求,無引數名呼叫。 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import

使用volley獲取HTTP網路請求介面的響應頭

一丶解決這個問題的時候先得知道什麼響應頭,與之對應的還有請求頭 二.找到volley內部訪問請求返回的response,並獲取響應頭資訊 protected Response<String> parseNetworkResponse(NetworkResponse resp

java呼叫HTTP介面(Get請求和Post請求

前提: id和name是傳入的引數 瀏覽器訪問介面: java程式碼呼叫Http介面程式碼如下(程式碼中註釋分為兩部分:處理get請求和post請求): package com.inspur.OKHTTP; import java.io.BufferedRe

35、分散式服務介面請求的順序性如何保證

1、面試題 分散式服務介面請求的順序性如何保證? 2、面試官心裡分析 其實分散式系統介面的呼叫順序,也是個問題,一般來說是不用保證順序的。但是有的時候可能確實是需要嚴格的順序保證。給大家舉個例子,你服務A呼叫服務B,先插入再刪除。好,結果倆請求過去了,落在不同機器上,可能插入請求因為某些

呼叫圖片上傳http介面,利用httpClient模擬請求

上傳圖片除了上傳到本地伺服器之外,通常需要上傳到對方的伺服器中,這時候除了上傳到我們本地然後做NFS之外(比較不合理),還需要直接捅對方介面,直接將檔案上傳到對方伺服器,這時候就需要利用httpclient來模擬一個圖片上傳請求。 public static JSONOb

spring boot整合OAuth2保證api介面安全

1、 OAuth 概念 OAuth 是一個開放標準,允許使用者讓第三方應用訪問該使用者在某一網站上儲存的私密的資源(如照片,視訊,聯絡人列表),而不需要將使用者名稱和密碼提供給第三方應用。OAuth允許使用者提供一個令牌,而不是使用者名稱和密碼來訪問他們存放在特定服

jmeter初級--簡單的HTTP登入請求介面測試)

本次主要根據postman自帶的demo使用jmeter進行介面測試。文章通過介紹一個簡單的HTTP請求的介面測試例子,更深入的瞭解jmeter的配置。1、開啟jmeter後,在測試計劃下新建一個執行緒組,如圖所示:2、新建一個HTTP請求,在http頁面中,根據postma

Loadrunner http JSON介面請求進行測試

Action() {     //首先呼叫web_reg_find()這個註冊函式,我們介面的正常返回結果都是<Code>0</Code>     web_reg_find("Search=Body", //定義查詢範圍     "SaveCount

使用HTTP POST請求12306網站介面查詢火車車次API

使用12306網站提供的介面,傳入引數,解析資料,先發個連結給大家看看...    http://www.devapi.org/12306-Search-Train-Number.html 介面型別:    HTTP(POST) / UTF-8 介面返回值:    json 引數詳解:    

http post請求介面 傳輸json

/** * http post請求 */ public class HttpRequest { private static PoolingClientConnectionManager conMgr = null;import org.apache.http.Htt