接口請求 URL轉碼


什么URL轉碼

不管是以何種方式傳遞url時,如果要傳遞的url中包含特殊字符,如想要傳遞一個+,但是這個+會被url會被編碼成空格,想要傳遞&,被url處理成分隔符。

尤其是當傳遞的url是經過Base64加密或者RSA加密后的,存在特殊字符時,這里的特殊字符一旦被url處理,就不是原先你加密的結果了。

如圖所示,訪問接口參數我傳遞參數為 1+1 結果瀏覽器顯示結果為 1 1 很明顯 '+' 被轉化成了空格。

轉碼之前訪問:

 

如果別人調用你接口傳遞的參數如果有特殊字符,那么你就需要進行轉碼進行處理,不然就會導致參數錯誤,如上圖所示。

解決方案:

public static void main(String[] args) {
//轉碼方法
String encode = URLEncoder.encode("1+1");
System.out.println("轉碼:" + encode);
//解碼方法
String decode = URLDecoder.decode(encode);
System.out.println("解碼:" + decode);
}

控制台輸出結果:

轉碼:1%2B1

解碼:1+1

轉碼之后訪問:

 

 

url特殊符號及對應的編碼:

 

 

符號

url中的含義

編碼

+

URL 中+號表示空格

%2B

空格

URL中的空格可以用+號或者編碼

%20

/

分隔目錄和子目錄

%2F

?

 

 

 

 

 

 

 

 

分隔實際的URL和參數

%3F

%

指定特殊字符

%25

#

表示書簽

%23

&

URL中指定的參數間的分隔符

%26

=

URL中指定參數的值

%3D

 

對稱加密與非對稱加密

對稱機密和解密都使用同一個密鑰。在加密解密過程中,使用同一個密鑰進行加解密。

 為什么使用數據加密

PRC遠程調用的時候,保證數據安全性問題  針對數據進行加密。

防止別人抓包分析Http請求,獲取明文數據並進行篡改。可以使用 postman 發送請求,使用 fidder 進行抓包分析數據並篡改。

 

由上面的結果可以知道,我發送的請求 的參數為 xiaoming,經過抓包之后我篡改了數據 將參數修改為了 大白,數據就這樣被篡改了,所以我們在調用接口的時候應該避免出現這樣的請求。

 未加密流程圖:

加密后流程圖:

常見的對稱加密技術

DES(數據加密標准):分組式加密,算法源於Lucifer,作為NIST對稱式加密標准;64位(有效位56位、校驗8位),分組算法

AES(高級加密標准):DES升級版,算法出自Rinjindael

3DES:128位,分組算法

IDEA(國際數據加密算法):128位,比DES快,分組算法

Blowfish:32-448位,算法公開,分組算法

RC4:流密碼,密鑰長度可變

RC5:分組密碼,密鑰長度可變,最大2048位

Rijndael:128位/196位/256位

對稱密碼的優點

 用戶只需記憶一個密鑰,就可用於加密、解密;

 與非對稱加密方法相比,加密解密的計算量小,速度快,簡單易用,適合於對海量數據進行加密處理 。

對稱密碼的缺點

如果密鑰交換不安全,密鑰的安全性就會喪失。特別是在電子商務環境下,當客戶是未知的、不可信的實體時,如何使客戶安全地獲得密鑰就成為一大難題。

如果用戶較多情況下的密鑰管理問題。N*(N-1)/2

如果密鑰多個用戶被共享,不能提供抗抵賴性

對稱加密使用場景:速度非常快。服務器與服務器端之間進行通訊。后台與后台進行通訊。

對稱密碼案例

 假設Alice和Bob是認識的,兩人為了保證通信消息不被其它人截取,預先約定了一個密碼,用來加密在他們之間傳送的消息,這樣即使有人截取了消息沒有密碼也無法知道消息的內容。由此便實現了機密性。

1、密碼是不能夠使用對稱加密的,如果使用對稱加密會被反向破解出來的,按照互聯網隱私的情況下是不能夠反向解密的。

2、密碼使用單向加密的,單項加密特征:是不可以被逆向破解的。MD5 單向加密一般都會進行加鹽處理。

加鹽的目的:防止別人破解的,如果拿不到鹽值是無法破解的。

如何保證APP接口安全

使用Https傳輸、使用令牌、使用非對稱加密。Http+Json 方式進行數據傳輸。

移動App接口是不能使用對稱加密的。

因為對稱加密,密鑰都是相同的,如果黑客反編譯破解移動打包apk,就可以得到密鑰,然后拿到我們對應的參數,所以移動App不能使用對稱加密。

所以移動App端不能使用對稱加密,我們需要使用非對稱加密。

非對稱加密(公鑰與私鑰)

使用一對密鑰:一個用於加密信息,另一個則用於解密信息。可以使用第三方工具生成非對稱密鑰對。

    兩個密鑰之間存在着相互依存關系:即用其中任一個密鑰加密的信息只能用另一個密鑰進行解密。

    其中加密密鑰不同於解密密鑰,公鑰加密私鑰解密,反之也可私鑰加密公鑰解密。

    密鑰依據性質划分,將其中的一個向外界公開,稱為公鑰;另一個則自己保留,稱為私鑰。公鑰(Public key)常用於數據加密(用對方公鑰加密)或簽名驗證(用對方公鑰解密),私鑰(Private key)常用於數據解密(發送方用接收方公鑰加密)或數字簽名(用自己私鑰加密)。

機密性、完整性、抗抵賴性

公鑰加密,私密解密(安全)。目前來說是最安全的加密手段,

缺點:效率低。

應用場景:第三方支付對接、核心的金融機構。

使用令牌方式實現參數傳遞安全方法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM