【求解釋】關於第三方接口調用中安全的疑問


首先聲明,我對什么加密解密,公鑰私鑰啊就是一小白。在看支付寶接口的時候,突然心生一疑問:與接口通訊中如何保證不被竊取和篡改?不懂~求解釋。

下面是一個典型的支付寶接口方式。

  1.  去支付寶申請接口權限,然后他會給你一個“partnerId” 和一個 “privateKey”。
  2. 然后請求某個接口的時候應該是這樣的:  serviceURI+msg&partnerId=partnerId&sing=MD5(msg+partnerId+privateKey);就是說你的報文和partnerId是明文的,然后用你要發送的報文+你的partnerId+你的privateKey做MD5運算,產生簽名。同時把簽名發給支付寶。
  3. 支付寶接到請求后,從明文拿到你的partnerId,再從他庫里檢索到你的privateKey。同樣對報文+你的partnerId+你的privateKey做MD5運算,如果算出得簽名和你發給他的簽名沒有問題,認為消息是沒有篡改過的。

  那,我的問題是。如果我是黑客,我也去支付寶申請了一對我的“partnerId” 和 “privateKey”。然后,我攔截了你發送給支付寶的請求,截下來之后,我對請求做了篡改,再把其中的partnerId替換成我的。並用我的partnerId和privateKey重新做簽名。最后再把篡改后的請求發送給支付寶。支付寶接收到的時候由於partnerId是我的了。我也是用的我的partnerId和privateKey做簽名。所以他的簽名驗證應該是可以通過的。也就說,他會認為這個請求沒有問題!但事實上這個請求是被我篡改了的! 這是怎么回事呢?

  有同學說,因為使用了HTTPs 所以不用擔心請求被攔截的問題。可惜我對HTTPs同樣不了解。如果HTTPs足夠可靠的話。那還要什么privateKey,還要簽名干什么?直接請求就行了啊。不懂。希望大家能給我解釋一下,越詳細越好。給我科普科普。

  PS:我這只是拿支付寶舉例子,貌似大部分第三方接口調用都是這個模式~


免責聲明!

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



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