隨著移動(dòng)設(shè)備的普及,移動(dòng)應(yīng)用程序(APP)已經(jīng)成為人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。為了讓更多的用戶能夠使用自己的APP,開發(fā)者需要將其分發(fā)到各個(gè)應(yīng)用市場(chǎng)或自己的網(wǎng)站上。然而,APP分發(fā)時(shí)面臨的一個(gè)重要問題就是防盜鏈。本文將介紹APP分發(fā)防盜鏈的原理和方法。
一、什么是防盜鏈?
防盜鏈?zhǔn)侵冈诨ヂ?lián)網(wǎng)上,防止未經(jīng)授權(quán)將資源鏈接到自己的網(wǎng)頁(yè)上。例如,一個(gè)網(wǎng)站A提供了一張圖片,但是網(wǎng)站B在未經(jīng)允許的情況下直接在自己的網(wǎng)頁(yè)上引用了該圖片,這就是盜鏈行為。如果網(wǎng)站A沒有采取相應(yīng)的防盜鏈措施,那么網(wǎng)站B就可以直接使用該圖片,這不僅會(huì)增加網(wǎng)站A的流量,而且還會(huì)消耗網(wǎng)站A的資源。因此,防盜鏈?zhǔn)潜Wo(hù)自己資源的一種重要方式。
二、APP分發(fā)防盜鏈的原理
APP分發(fā)防盜鏈的原理與網(wǎng)頁(yè)防盜鏈的原理類似,都是通過判斷HTTP請(qǐng)求頭中的referer字段,來確定請(qǐng)求是否來自合法的來源。
referer字段是HTTP請(qǐng)求頭中的一個(gè)字段,用于標(biāo)識(shí)當(dāng)前請(qǐng)求的來源。例如,用戶在瀏覽器中訪問網(wǎng)站A,然后在該網(wǎng)站中點(diǎn)擊了一個(gè)鏈接跳轉(zhuǎn)到網(wǎng)站B,那么在用戶跳轉(zhuǎn)到網(wǎng)站B時(shí),請(qǐng)求頭中的referer字段就會(huì)包含網(wǎng)站A的URL。
在APP分發(fā)中,開發(fā)者可以在APP中添加一段代碼,用于判斷HTTP請(qǐng)求頭中的referer字段。如果referer字段的值是合法的來源,那么就可以正常分發(fā)APP;如果referer字段的值是非法的來源,那么就可以拒絕請(qǐng)求或者采取其他措施。
三、APP分發(fā)防盜鏈的方法
1.服務(wù)器端防盜鏈
服務(wù)器端防盜鏈?zhǔn)侵冈诜?wù)器端對(duì)HTTP請(qǐng)求頭中的referer字段進(jìn)行判斷,如果referer字段的值不是合法的來源,那么就可以拒絕請(qǐng)求或者采取其他措施。
服務(wù)器端防盜鏈的實(shí)現(xiàn)方式比較簡(jiǎn)單,只需要在服務(wù)器端添加一段代碼即可。例如,蘋果應(yīng)用如何分發(fā)在PHP中,可以使用以下代碼實(shí)現(xiàn)服務(wù)器端防盜鏈:
“`
if (strpos($_SERVER[‘HTTP_REFERER’], ‘yourdomain.com’) === false) {
// 非法來源,拒絕請(qǐng)求
die(‘Access Denied’);
}
“`
2.客戶端防盜鏈
客戶端防盜鏈?zhǔn)侵冈贏PP中對(duì)HTTP請(qǐng)求頭中的referer字段進(jìn)行判斷,如果referer字段的值不是合法的來源,那么就可以拒絕請(qǐng)求或者采取其他措施。
客戶端防盜鏈的實(shí)現(xiàn)方式也比較簡(jiǎn)單,只需要在APP中添加一段代碼即可。例如,在Android中,可以使用以下代碼實(shí)現(xiàn)客戶端防盜鏈:
“`
String referer = request.getHeader(“referer”);
if (referer == null || !referer.contains(“yourdomain.com”)) {
// 非法來源,拒絕請(qǐng)求
return;
}
“`
客戶端防盜鏈的優(yōu)點(diǎn)是可以減輕服務(wù)器端的壓力,但是也存在一些缺
一門APP證書制作工具(https://platform.yimenapp.com/)提供APP證書在線制作,支持蘋果證書、安卓證書在線一鍵快捷制作。工具完全免費(fèi),注冊(cè)成為一門APP開發(fā)者即可使用,全中文化云端APP證書工具。
一鍵制作IOS蘋果證書,包含appstore上架證書、開發(fā)環(huán)境測(cè)試證書、ADhoc生產(chǎn)環(huán)境測(cè)試證書、在線生成P12開發(fā)者證書證書,P12推送證書、P8推送證書,快捷綁定UDID、自定義包名Bundle ID、在線獲取描述文件;
一鍵制作安卓證書,支持自定義安卓包名、簽名文件密碼(storepass)、別名(alias)、別名密碼(keypass)、公司/機(jī)構(gòu)名稱 (O)、部門 (OU)、國(guó)家/地區(qū) (C)、省份 (ST)、城市 (L)、郵箱 (E)、以及安卓證書有效期。