1278
技術社區[雲棲]
接口文檔__Android_安全組件教程_移動安全-阿裏雲
1 內容簡介
本文檔針對安全組件的接口使用進行詳細說明,在使用接口前,請先參考接入前準備,接入安全組件。
安全組件的主要接口如下表:
組件 | 類 | 說明 |
初始化 | SecurityInit | 負責全局初始化 |
異常 | JAQException | 接口調用異常 |
安全接口 | SecuritySignature | 安全簽名 |
SecurityCipher | 安全加密 | |
SecurityStorage | 安全存儲 | |
SecurityVerification | 安全風控 |
初始化:負責整個安全組件的同步初始化。
異常:調用初始化或安全接口時,當接口調用失敗時會拋出JAQException異常。JAQException包含錯誤碼,可以用來甄別具體錯誤類型。
安全接口:提供了安全簽名、安全加密和安全存儲三大類接口。其中,安全簽名和安全加密需要使用指定密鑰Key。這裏的“指定密鑰Key”是指,在獲取yw_1222_0335.jpg文件時同時獲得的“密鑰”,如“4bf1c***81ca”。
在使用安全簽名和安全加密時,需要輸入key值的位置,隻需要填入“4bf1c***81ca”。
1.1 安全簽名
安全簽名基於HMAC_SHA1算法和指定密鑰Key對數據進行加簽,在傳輸數據時,可以利用加簽的結果對傳輸數據進行數據校驗。
以下圖為例,在進行轉賬時,無簽名的正常流程為如圖2
(圖2 無簽名的數據傳輸)
但如圖3,攻擊者可以在數據傳輸時對數據進行劫持,並進行偽造或修改:
(圖3 攻擊者進行劫持)
此時,如圖4,利用簽名對數據進行校驗,劫持者的偽造信息就可以被識別。
(圖4 增加簽名的數據傳輸)
1.2 安全加密
安全加密基於AES128算法和指定密鑰Key對輸入數據進行加密,加密過程完全在Native層實現,速度更快,較Java方法更加安全。
普通Java加密和聚安全加密相關對比,請參看下表:
項目 | 普通加密 | 聚安全安全加密 |
---|---|---|
速度 | 慢 | 快 |
密鑰 | 存於Java代碼中易被破解 | 加密存儲在加密存儲在yw_1222_0335.jpg文件中,使用沙箱保護,不直接暴露在代碼中 |
安全性 | 不校驗APK簽名,易被重打包 | 校驗APK簽名,攻擊者重打包後無法直接使用 |
1.3 安全存儲
安全簽名用於校驗數據不同,安全存儲是對輸入數據進行加密然後存儲在本地sharepreference中,保護用戶以及客戶端私有數據安全。對於客戶的私有數據,如登錄密碼、用戶名等敏感信息,以及客戶端訪問網絡端獲取的敏感信息如果直接明文存儲在sharepreference中,極容易被攻擊者利用。使用安全存儲,會在寫入sharepreference前進行加密,提升數據的安全性,避免被攻擊者利用。以下圖為例,直接存儲明文密碼易被竊取。
(圖5 明文存儲的密碼易被竊取)
如圖6,使用安全存儲後,數據在存儲前會進行加密,增強數據安全。
(圖6 安全存儲進行加密存儲)
2 初始化(SecurityInit類)
2.1 初始化說明
初始化負責完成整個聚安全安全組件的全局初始化。初始化是線程安全的,初始化調用隻需要進行一次,無需重複調用。
在使用安全接口時,如檢測到聚安全安全組件未初始化,初始化會被默認執行。但是建議在使用安全接口時首先進行初始化,並判斷初始化是否成功,方便查找原因。
2.2 初始化接口
public static int Initialize(Context context) throws JAQException
功能:
聚安全安全組件初始化
參數:
context:任意 Activity、 Service 等 Coxtext 類非空實例。
返回值:
初始化成功,返回0。
初始化失敗,返回1。
異常:
初始化過程中出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
2.3 錯誤碼
錯誤碼 | 值 | 含義 |
---|---|---|
SEC_ERROR_INIT_CONTEXT_ISNULL | 101 | 參數不正確,請檢查輸入的參數. |
SEC_ERROR_INIT_SO_CHECK_ERROR | 102 | 5.x版本之前:libsecurityguard***.so文件和無線保鏢的jar包不匹配。請檢驗是否存在libsecurityguard***.so文件被破壞或修改的情況。 |
SEC_ERROR_INIT_LOADSO_FAIL | 103 | 5.x版本之前:libsecurityguard*.so文件裝載問題,通常不會發生。如果發生此問題,可以卸載APK,再重新安裝來嚐試。5.x版本及之後:插件對應的內部so加載失敗,請解壓對應插件檢查內部的so版本是否匹配。 |
SEC_ERROR_INIT_NO_RSA_FILE_ERROR | 104 | 5.x版本之前:APK中沒有正常的RSA簽名文件。請檢驗簽名過程。 |
SEC_ERROR_INIT_PUBLICKKEY_FIND_ERROR | 105 | 5.x版本之前:RSA文件不正常,無法正常解析出公鑰。 |
SEC_ERROR_INIT_SO_NOT_EXIST | 106 | 5.x版本之前:在APK中找不到對應aebi的libsecurityguard*.so文件,請檢查是否正常打包了無線保鏢SDK提供的so文件。(不同版本的不通用,請不要拿其他版本的替換) |
SEC_ERROR_INIT_DECODESO_FAIL | 107 | 5.x版本之前:libsecurityguard*.so解碼失敗,請卸載後全新安裝或檢查磁盤空間。 |
SEC_ERROR_INIT_LOADSOINNER_FAILED | 108 | 5.x版本之前:加載內部so失敗。 |
SEC_ERROR_INIT_FDSOFUN_FAILED | 109 | 5.x版本之前:內部so運行失敗。 |
SEC_ERROR_INIT_PLUGIN_NOT_EXISTED | 110 | 插件不存在,請檢查打包配置中,so是否正確打入APK中。 |
SEC_ERROR_INIT_PLUGIN_LOAD_FAILED | 111 | 加載插件失敗,一般不會發生。請檢查是否存在IO異常或內存分配不足。 |
SEC_ERROR_INIT_LOAD_INTERFACE_NOT_EXISTED | 112 | 獲取接口失敗,請檢查傳入的接口名稱是否正確。 |
SEC_ERROR_INIT_PLUGIN_REQUIREMENT_NOT_MEET | 113 | 插件依賴不匹配,請檢查插件版本,查看依賴關係是否兼容。 |
SEC_ERROR_INIT_EXTRACT_DIR_NOT_EXISTED | 114 | 係統IO異常,插件加載目錄打開失敗。 |
SEC_ERROR_INIT_UNKNOWN_ERROR | 199 | 未知錯誤,請重試。 |
2.4示例程序
import com.alibaba.wireless.security.jaq.JAQException;
import com.alibaba.wireless.security.jaq.SecurityInit;
//初始化
try {
SecurityInit.Initialize(getApplicationContext());
} catch (JAQException e) {
Log.e(TAG, "errorCode =" + e.getErrorCode());
}
3 異常
3.1 異常說明
當初始化或安全接口調用內部出現異常時,會以JAQException的形式拋出異常。
JAQException類提供了getErrorCode()方法獲取錯誤碼。
3.2 異常接口
public int getErrorCode()
功能:
獲取錯誤碼。
參數:
無。
返回值:
當前調用的錯誤碼。
異常:
初始化過程中出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
4 安全簽名(SecuritySignature類)
4.1 安全簽名說明
安全簽名用於對輸入數據進行加簽,進而在方便在server端進行數據校驗。
4.2 安全簽名接口
public SecuritySignature(Context context)
功能:
初始化SecuritySignature類實例。
參數:
context:任意 Activity 、Service 等 Coxtext 類非空實例。
返回值:
無。
異常:
無。
public String sign(String input, String key) throws JAQException
功能:
使用密鑰key對輸入數據進行簽名。
參數:
input:待加簽數據。
key:存儲於yw_1222_0335.jpg文件中的指定密鑰key。
返回值:
加簽結果。
異常:
出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
4.3 錯誤碼
錯誤碼 | 值 | 含義 |
---|---|---|
SEC_ERROR_SIGNATRUE_INVALID_INPUT | 601 | 參數不正確,請檢查輸入的參數 |
SEC_ERROR_SIGNATURE_NO_MEM | 602 | 內存分配失敗,請重試 |
SEC_ERROR_SIGNATURE_NO_SEEDSECRET | 606 | 使用帶seedkey的top簽名時,沒有找到seedkey對應的seedsecret |
SEC_ERROR_SIGNATURE_DATA_FILE_MISMATCH | 607 | 圖片文件存在問題。一般是獲取圖片文件時的apk簽名和當前程序的apk簽名不一致。請使用當前程序的apk重新生成圖片 |
SEC_ERROR_SIGNATURE_NO_DATA_FILE | 608 | 沒有找到圖片文件,請確保圖片文件在resdrawable目錄下 |
SEC_ERROR_SIGNATURE_INCORRECT_DATA_FILE | 609 | 圖片文件格式有問題,請重新生成圖片文件 |
SEC_ERROR_SIGNATURE_INCORRECT_DATA_FILE_DATA | 610 | SEC_ERROR_SIGNATURE_INCORRECT_DATA_FILE_DATA |
SEC_ERROR_SIGNATURE_KEY_NOT_EXSITED | 611 | 參數中的key在圖片文件中找不到,請確認圖片文件中有這個key |
SEC_ERROR_SIGNATURE_ILLEGEL_KEY | 612 | 輸入的key非法,key不能為:’:’,’|’,’/‘,’.’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’ |
SEC_ERROR_SIGNATURE_ATLAS_KEY_NOT_EXSITED | 613 | atlas密鑰不存在 |
SEC_ERROR_SIGNATURE_LOW_VERSION_DATA_FILE | 615 | 請升級新版本的圖片,當前圖片的版本太低 |
SEC_ERROR_SIGNATRUE_UNKNOWN | 699 | 未知錯誤,請重試 |
4.4 示例程序
import com.alibaba.wireless.security.jaq.JAQException;
import com.alibaba.wireless.security.jaq.SecuritySignature;
//安全簽名
SecuritySignature securitySignature = new SecuritySignature(getApplicationContext());
try {
//"helloword":待簽名字串
//"ka1":簽名用的密鑰key
String signStr = securitySignature.sign("helloword", "ka1");
//將簽名結果和原始數據一起發送到服務端,服務端根據原始數據重新計算簽名,並與發送的簽名進行比對,進而完成數據校驗。
sendtoServer("helloword", signStr);
}
catch (JAQException e) {
Log.e(TAG, "errorCode =" + e.getErrorCode());
}
5 安全加密(SecurityCipher類)
5.1 安全加密說明
安全加密用於對輸入數據進行加密。
5.2 安全加密接口
public SecurityCipher(Context context)
功能:
初始化SecurityCipher類實例。
參數:
context:任意 Activity、Service 等 Coxtext 類非空實例。
返回值:
無。
異常:
無。
public String encryptString(String input, String key) throws JAQException
功能:
使用指定密鑰key對輸入數據進行加密。
參數:
input:待加密數據。
key:存儲於yw_1222_0335.jpg文件中的指定密鑰key。
返回值:
加密結果。
異常:
出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
public byte[] encryptBinary(byte[] input, String key) throws JAQException
功能:
使用指定密鑰key對輸入數據進行加密。
參數:
input:待加密數據。
key:存儲於yw_1222_0335.jpg文件中的指定密鑰key。
返回值:
加密結果。
異常:
出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
public String decryptString(String input, String key) throws JAQException
功能:
使用指定密鑰key對輸入數據進行解密。
參數:
input:待解密數據。
key:存儲於yw_1222_0335.jpg文件中的密鑰key。
返回值:
解密結果。
異常:
出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
public byte[] decryptBinary(byte[] input, String key) throws JAQException
功能:
使用指定密鑰key對輸入數據進行解密。
參數:
input:待解密數據。
key:存儲於yw_1222_0335.jpg文件中的指定密鑰key。
返回值:
解密結果。
異常:
出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
5.3 錯誤碼
錯誤碼 | 值 | 含義 |
---|---|---|
SEC_ERROR_STA_INVALID_PARAM | 301 | 參數不正確,請檢查輸入的參數 |
SEC_ERROR_STA_DATA_FILE_MISMATCH | 302 | 圖片文件有問題。一般是獲取圖片文件時的apk簽名和當前程序的apk簽名不一致。請使用當前程序的apk重新生成圖片 |
SEC_ERROR_STA_NO_DATA_FILE | 303 | 沒有找到圖片文件,請確保圖片文件在resdrawable目錄下 |
SEC_ERROR_STA_INCORRECT_DATA_FILE | 304 | 圖片文件格式由問題,請重新生成圖片文件 |
SEC_ERROR_STA_INCORRECT_DATA_FILE_DATA | 305 | 圖片文件內的內容不正確,請重新生成圖片文件 |
SEC_ERROR_STA_KEY_NOT_EXISTED | 306 | 參數中的key在圖片文件中找不到,請確認圖片文件中有這個key |
SEC_ERROR_STA_ILLEGEL_KEY | 307 | 輸入的key非法,key不能為:’:’,’|’,’/‘,’.’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’ |
SEC_ERROR_STA_NO_MEMORY | 308 | 內存不足,請重試 |
SEC_ERROR_STA_NO_SUCH_INDEX | 309 | 在圖片文件中沒有找到這個index |
SEC_ERROR_STA_INVALID_ENCRYPTED_DATA | 310 | 非法的加密數據 |
SEC_ERROR_STA_DECRYPT_MISMATCH_KEY_DATA | 311 | 待解密數據與密鑰不匹配 |
SEC_ERROR_STA_LOW_VERSION_DATA_FILE | 312 | 請升級新版本的圖片,當前圖片的版本太低 |
SEC_ERROR_STA_STORE_UNKNOWN_ERROR | 399 | 未知錯誤,請重試 |
5.4 示例程序
import com.alibaba.wireless.security.jaq.JAQException;
import com.alibaba.wireless.security.jaq.SecurityCipher;
//安全加解密
SecurityCipher securityCipher = new SecurityCipher(getApplicationContext());
try {
//加密字串
//"helloword":待加密字串
//"ka1":加密用的密鑰key
String encryptString = securityCipher.encryptString("helloword", "ka1");
//解密字串
//encryptString:待解密字串
//"ka1":解密用的密鑰key
String decryptString = securityCipher.decryptString(encryptString, "ka1");
byte[] dataBytes = {1,2,3,4,5,6,7,8,9,0};
//加密數組
//dataBytes :待加密數組
//"ka1":加密用的密鑰key
byte[] encryptBytes = securityCipher.encryptBinary(dataBytes, "ka1");
//解密數組
//encryptBytes:待解密數組
//"ka1":解密用的密鑰key
byte[] decryptBytes = securityCipher.decryptBinary(encryptBytes, "ka1");
}
catch (JAQException e) {
Log.e(TAG, "errorCode =" + e.getErrorCode());
}
6 安全存儲(SecurityStorage類)
6.1 安全存儲說明
安全存儲對應用數據進行加密存儲。
6.2 安全存儲接口
public SecurityStorage (Context context)
功能:
初始化SecurityStorage類實例。
參數:
context:任意 Activity、Service 等 Coxtext 類非空實例。
返回值:
無。
異常:
無。
public int putString(String key, String value) throws JAQException
功能:
保存數據。
參數:
key:索引value的key。
key:value待存儲的數據。
返回值:
存儲成功返回1,否則返回0.
異常:
出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
public void removeString(String key) throws JAQException
功能:
刪除數據。
參數:
key:索引value的key。
返回值:
刪除成功返回1,否則返回0.
異常:
出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
public String getString(String key) throws JAQException
功能:
獲取數據。
參數:
key:索引value的key。
返回值:
獲取成功返回1,否則返回0.
異常:
出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
6.3 錯誤碼
錯誤碼 | 值 | 含義 |
---|---|---|
SEC_ERROR_DYN_STORE_INVALID_PARAM | 501 | 參數不正確,請檢查輸入的參數 |
SEC_ERROR_DYN_STORE_NO_MEMORY | 502 | 內存不足,請重試 |
SEC_ERROR_DYN_STORE_GET_SYS_PROPERTIES_FAILED | 503 | 獲取係統屬性失敗,請確認是否有軟件攔截,獲取係統參數 |
SEC_ERROR_DYN_STORE_GET_DATA_FILE_KEY_FAILED | 504 | 獲取圖片文件的秘鑰失敗,請確認圖片文件的格式和內容是否正確 |
SEC_ERROR_DYN_STORE_GET_ENCRYPT_KEY_FAILED | 505 | 獲取動態加密秘鑰失敗,請重試 |
SEC_ERROR_DYN_STORE_INVALID_ENCRYPTED_DATA | 506 | 待解密數據不是可解密數據 |
SEC_ERROR_DYN_STORE_DECRYPT_MISMATCH_KEY_DATA | 507 | 待解密數據與密鑰不匹配,請重試 |
SEC_ERROR_DYN_STORE_DDPEX_KEY_VALUE_NOT_EXSIT | 508 | 傳入key對應的value不存在 |
SEC_ERROR_DYN_STORE_UNKNOWN_ERROR | 599 | 未知錯誤,請重試 |
6.4 示例程序
import com.alibaba.wireless.security.jaq.JAQException;
import com.alibaba.wireless.security.jaq.SecurityStorage;
//安全存儲
SecurityStorage securityStorage = new SecurityStorage(getApplicationContext());
try {
//保存"helloword"
securityStorage.putString("mykey", "helloword");
//獲取"helloword"
securityStorage.getString("mykey");
//刪除"helloword"
securityStorage.removeString("mykey");
}
catch (JAQException e) {
Log.e(TAG, "errorCode =" + e.getErrorCode());
}
7 模擬器檢測
7.1 組件介紹
接入用戶通過聚安全風控接口,對用戶、軟件環境、硬件環境進行安全驗證,從而在注冊、登錄等場景進行風險的防控。
public SecurityVerification (Context context)
功能:
初始化SecurityVerification類實例。
參數:
context:任意Activity、Service等Coxtext類非空實例。
返回值:
無。
異常:
無。
public String doJAQVerfificationSync (HashMap<String, String> info, int timeout) throw JAQException
功能:
安全防控接口。調用此接口後,會得到一個token。將此token作為憑證,可以到聚安全服務端進行防控結果的獲取。(此接口有耗時操作,不能在UI線程內調用)
參數:
info:擴展碼數,其他需要的信息,以key-v形式存在於info中,可選。
timeout:接口超時時間,單位秒。隻能傳入1 <= timeout <= 22的整型,傳入其他值,將使用默認超時時間(22秒)。
返回值:
安全Token。失敗時返回null。調用方得到此token後,需要將此token傳遞到自己的server端,再由自己的server端將此token透傳到聚安全server端,獲得最後的風控校驗結果。
異常:
出現異常時,會拋出JAQException異常。可以根據JAQException實例的getErrorCode()方法獲取錯誤碼。
7.2 錯誤碼
錯誤碼 | 值 | 含義 |
---|---|---|
SEC_ERROR_SECURITYBODY_INVALID_PARAM | 1401 | 參數不正確,請檢查輸入的參數。 |
SEC_ERROR_SECURITYBODY_INVALID_THREAD | 1402 | 接口調用線程錯誤。請在非UI線程內調用此接口(因為本接口有耗時操作)。 |
SEC_ERROR_SECURITYBODY_NET_ERROR | 1403 | 網絡超時或網絡斷開。 |
SEC_ERROR_SECURITYBODY_SERVER_ERROR | 1404 | 聚安全服務端器錯誤,請確認應用是否有權限訪問此接口。 |
SEC_ERROR_SECURITYBODY_APPKEY_ERROR | 1405 | 加密文件yw_1222_0335.jpg格式或其內數據有問題。常見原因為用錯圖片(iOS與Android圖片不通用)或者圖片內沒有存放對應的Top Appkey。 |
SEC_ERROR_SECURITYBODY_SIGNATURE_ERROR | 1406 | 加密文件yw_1222_0335.jpg格式或其內數據有問題。常見原因為用錯圖片(iOS與Android圖片不通用)或者圖片內沒有存放對應的Top Appkey。 |
SEC_ERROR_SECURITYBODY_ENCRYPTION_ERROR | 1407 | 數據加密錯誤。 |
SEC_ERROR_SECURITYBODY_TOP_ERROR | 1408 | TOP協議錯誤,請檢查手機時間設置是否正常,加密圖片yw_1222_0335.jpg使用是否正確。 |
SEC_ERROR_SECURITYBODY_CONCURRENT | 1409 | 接口被並發調用錯誤;本接口不支持多線程同時調用。 |
SEC_ERROR_SECURITYBODY_UNSUPPORTED | 1498 | 接口在這個版本的SDK中不支持。 |
SEC_ERROR_SECURITYBODY_UNKNOWN_ERR | 1499 | 未知錯誤,請重試。 |
7.3 示例程序
import com.alibaba.wireless.security.jaq.JAQException;
import com.alibaba.wireless.security.jaq.SecurityVerification;
new Thread(new Runnable() {
@Override
public void run() {
try {
SecurityVerification sv = new SecurityVerification (getContext().getApplicationContext());
String token = sv.doJAQVerfificationSync(null, 20);
//使用此token進行後續的安全驗證
} catch (JAQException e) {
Log.e(TAG, "errorCode =" + e.getErrorCode());
}
}
}).start();
8 模擬器檢測
8.1 組件介紹
檢測程序當前是運行在真實手機中還是模擬器中,運行在模擬器中意味著別人可以更容易的調試和控製我們的程序。直接調用接口就可以得到模擬器檢測的結果。
原型如下:
packagecom.alibaba.wireless.security.open.simulatordetect;
publicinterfaceISimulatorDetectComponent{
publicbooleanisSimulator();
}
8.2 isSimulator
API描述檢測程序當前是運行在真實手機中還是模擬器中,運行在模擬器中意味著別人可以更容易的調試和控製我們的程序。直接調用接口就可以得到模擬器檢測的結果。
- API原型
publicbooleanisSimulator();
- 參數說明
無參數
- 返回值
返回true表明當前手機是模擬器,返回false表明手機是真機。
- 應用舉例
import com.alibaba.wireless.security.open.simulatordetect.ISimulatorDetectComponent;
import com.alibaba.wireless.security.open.SecurityGuardManager;
SecurityGuardManager manager =null;
try{
manager = SecurityGuardManager.getInstance(getApplicationContext());
ISimulatorDetectComponent simulatorDetectComp = manager.getSimulatorDetectComp();
boolean result = simulatorDetectComp.isSimulator();
}
catch(SecException e) {
e.printStackTrace();
}
- 錯誤碼解釋
無錯誤碼
最後更新:2016-11-23 16:04:13
上一篇:
接入前準備__Android_安全組件教程_移動安全-阿裏雲
下一篇:
服務端驗簽及加解密__安全組件教程_移動安全-阿裏雲
LogSearch-上下文查詢__Getting-Started_日誌服務-阿裏雲
漏洞等級說明__漏洞說明_先知計劃-阿裏雲
配置媒體工作流__開發人員指南_視頻點播-阿裏雲
PostgreSQL中的數據是否可以放到雲數據庫HybridDB版進行分析?__使用管理常見問題_產品相關問題_雲數據庫 HybridDB-阿裏雲
對比度__圖片效果_圖片處理指南_對象存儲 OSS-阿裏雲
混合雲__使用金融雲產品_金融雲-阿裏雲
RowInBatchWriteRowResponse__DataType_API 參考_表格存儲-阿裏雲
創建存儲過程__數據庫開發_用戶指南(RDBMS)_數據管理-阿裏雲
修改共享帶寬包帶寬__NAT網關相關接口_API 參考_雲服務器 ECS-阿裏雲
序幕拉開:阿裏雲晉升全球雲計算頂級俱樂部
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲