㈠ IOS設備安全獲取真實設備的唯一設備ID
蘋果設備的唯腔鄭一設備ID是UDID,目前只有一種方式可以獲取到用戶設備的UDID,就是通過安裝描述文件獲取,同時還可以獲取設備的IMEI 序列號 機型 系統版本等
提供一個mobileconfig後綴的描世圓稿述文件,內容為
其實上面的獲取方式,無法保證安搜孝全,關於校驗數據的完整性,目前網上也沒有方案;經過長期的研究,終於解決了這個問題;需要研究的可以前往
點擊前往 https://authapi.applekuid.com
㈡ WiFi顯示已停用
就是無線連接已經關閉。
是指手機保存的是原來沒改密碼時候的鏈接,或是路由器出現了故障。Wi-Fi又稱「行動熱點」。目的是改善基於標準的無線網路產品之間的互通性。IEEE802.11的設備已安裝指仔在市面上的許多產品,如列印機、筆記本電腦以及其他可以無線上網的周邊設備。
無線網路是IEEE定義的無線網技術,在1999年IEEE官方定義802.11標準的時候,IEEE選擇並認定了CSIRO發明的無線網技術是世界上最好的無線網技術,因此CSIRO的無線網技術標准,就成為了2010年Wi-Fi的核心技術標准。無線網路技術由澳洲政府的研究機構CSIRO在90年代發明並於1996年在美國滲逗大成功申請了無線網技術專利。無線網路在無線區域網的范疇是指「無線相容性認證」,實質上是一種商業認證,同時也是一種無線聯網技術,以前通過網線連接電腦,而Wi-Fi則是通過無線電波來連網叢豎;常見的就是一個無線路由器,那麼在這個無線路由器的電波覆蓋的有效范圍都可以採用Wi-Fi連接方式進行聯網,如果無線路由器連接了一條ADSL線路或者別的上網線路,則又被稱為熱點。
㈢ 如何獲取設備唯一標識
1. The IMEI: 僅僅只對Android手機有效:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE
採用此種方法,需要在AndroidManifest.xml中加入一個許可:android.permission.READ_PHONE_STATE,並且用戶應當允許安裝此應用。作為手機來講,IMEI是唯一的,它應該類似於 359881030314356(除非你有一個沒有量產的手機(水貨)它可能有無效的IMEI,如:0000000000000)。
2. Pseudo-Unique ID, 這個在任何Android手機中都有效
有一些特手悉殊的情況,一些如畢歷乎平板電腦的設置沒有通話功能,或者你不願加入READ_PHONE_STATE許可。而你仍然想獲得唯一序列號之類的東西。這時你可以通過取出ROM版本、製造商、CPU型號、以及其他硬體信息來實現這一點。這樣計算出來的ID不是唯一的(因為如果兩個手機應用了同樣的硬體以爛纖及Rom 鏡像)。但應當明白的是,出現類似情況的可能性基本可以忽略。要實現這一點,你可以使用Build類:
String m_szDevIDShort = "35" + //we make this look like a valid IMEI
Build.BOARD.length()%10+ Build.BRAND.length()%10 + Build.CPU_ABI.length()%10 + Build.DEVICE.length()%10 + Build.DISPLAY.length()%10 + Build.HOST.length()%10 + Build.ID.length()%10 + Build.MANUFACTURER.length()%10 + Build.MODEL.length()%10 + Build.PRODUCT.length()%10 + Build.TAGS.length()%10 + Build.TYPE.length()%10 + Build.USER.length()%10 ; //13 digits
大多數的Build成員都是字元串形式的,我們只取他們的長度信息。我們取到13個數字,並在前面加上「35」。這樣這個ID看起來就和15位IMEI一樣了。
㈣ 什麼是網路設備AAA認證怎麼實現的
AAA認證是什麼意思?AAA認證申報流程.AAA是認證(Authentication)、授權(Authorization)和計費(Accounting)的簡稱,是網路安全中進行訪問控制的一種安全管理機制,提供認證、授權和計費三種安全服務。提供給安全設備來授權用戶接入設備或者臨近網路的一個架構。授權特性用來在用戶被認證之後限制用戶的許可權。統計用來維持設備活動,以及網路或者網路設備中行為的日誌。
AAA可以在單個用戶或者單個服務的基礎上執行它的功能。也就是說,可以用來認證和授權單個用戶或者服務,AAA設置在路由器或者PIX或者任何其他這樣的設備上,,這些設備都需要AAA對接入設備本身或者與設備相連的網路的用戶進行限制。路由器可以使用本地資料庫獲取用於AAA的數據,比如用戶名或者口令或者每個用戶的訪問控制列表;它也可以通過諸如RADIUS或者TACACS+這樣的協議來請求一個認證伺服器.
企業信用等級AAA證書屬於一種榮譽資質,是提升企業公信力和影響力保障的一項資質。信用等級是信用 (資信)評估機構根據企業資信評估結果對企業信用度劃分的等級類別,它反映了企業信用度的高低。
AAA信用等級是一種等級劃分。代指企業的信用經過行業、機構評審達到A級的信用標准,獲評企業會得到機構出具的牌匾、證書。
另外,信用等級證書我國採用的是國際通行的「四等十級制」評級等級,具體等級分為:AAA,AA,A,BBB,BB,B,CCC,CC,C,D。其中AAA級是最高等級,D級最低。信用等級越高表明企業信用程度越高,經營狀況、盈利水平越好,履約能力、償債能力越強。
㈤ 許可權沒有授權時獲取安卓設備唯一碼會閃退嗎
打開行裂【安全中心】,進入【授權管理】。選擇【應用許可權管理】。選擇【應用管理】。在應用列表中找到想要開伏拿通許可權的應用,點擊進入。在許可權列表中找到【讀缺帶搭取聯系人】。點擊【讀取聯系人】,在下方彈出來的選項中選擇「允許」即可。
我國法律並沒有那麼完善。不給許可權就閃退,是逼你給許可權,以便收集隱私,遺憾的是,中國對收集隱私,並沒什麼法律上的限制(法律滯後),只能靠企業自律。
㈥ 如何獲取Android設備唯一識別碼
DEVICE_ID
這是Android系統為開發者提供的用於標識手機設備的串號,也是各種方法中普適性較高的,可以說幾乎所有的設備都可以返回這個串號,並且唯一性良好。
這個DEVICE_ID可以同通過下面的方法獲取:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String DEVICE_ID = tm.getDeviceId();
它會根據不同的手機設備返回IMEI,MEID或者ESN碼,但在使用的過程中有以下問題:
非手機設備:最開始搭載Android系統都手機設備,而現在也出現了非手機設備:如平板電腦、電子書、電視、音樂播放器等。這些設備沒有通話的硬體功能,系統中也就沒有TELEPHONY_SERVICE,自然也就無法通過上面的方法獲伏棚得DEVICE_ID。
許可權問題:獲取DEVICE_ID需要READ_PHONE_STATE許可權,如果只是為了獲取DEVICE_ID而沒有用到其他的通話功能,申請這個許可權一來察賀大才小用,二來部分用戶會懷疑軟體的安全性。
廠商定製系統中的Bug:少數手機設備上,由於該實現有漏洞,會返回垃圾,如:zeros或者asterisks
MAC ADDRESS
可以使用手機Wifi或藍牙的MAC地址作為設備標識,但是並不推薦這么做,原因有以下兩敗廳派點:
硬體限制:並不是所有的設備都有Wifi和藍牙硬體,硬體不存在自然也就得不到這一信息。
獲取的限制:如果Wifi沒有打開過,是無法獲取其Mac地址的;而藍牙是只有在打開的時候才能獲取到其Mac地址。
獲取Wifi Mac地址:
獲取藍牙 Mac地址:
Sim Serial Number
裝有SIM卡的設備,可以通過下面的方法獲取到Sim Serial Number:
TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); String SimSerialNumber = tm.getSimSerialNumber();
注意:對於CDMA設備,返回的是一個空值!
ANDROID_ID
在設備首次啟動時,系統會隨機生成一個64位的數字,並把這個數字以16進制字元串的形式保存下來,這個16進制的字元串就是ANDROID_ID,當設備被wipe後該值會被重置。可以通過下面的方法獲取:
import android.provider.Settings; String ANDROID_ID = Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID);
ANDROID_ID可以作為設備標識,但需要注意:
廠商定製系統的Bug:不同的設備可能會產生相同的ANDROID_ID:9774d56d682e549c。
廠商定製系統的Bug:有些設備返回的值為null。
設備差異:對於CDMA設備,ANDROID_ID和TelephonyManager.getDeviceId() 返回相同的值。
Serial Number
Android系統2.3版本以上可以通過下面的方法得到Serial Number,且非手機設備也可以通過該介面獲取。
String SerialNumber = android.os.Build.SERIAL;
㈦ android獲取設備唯一ID(優化方案)
最近,因公司產品及客戶需要,領導讓我研究免存儲設備ID,以及給出一個設備ID最佳的方案(可與存儲相結合)。在研究過瀏覽器的fingerprient2js後,頗有心得,並且看網上似乎木有完美的解決方案,於是寫了培滲這篇文章,僅供需要的開發者參考。(該演算法暫未進行驗證,這里先給出一個jar包,後期我會山中圓在SDK中加入調查介面,分兩個jar包(測試版和正式版),希望開發者能支持測試版,穩定後使用正式版。)
在產品中,首先肯定要盡量避免許可權,其次考慮卸載APP後ID不一致的問題,再就是盡量結合存儲,降低卸載或重裝app時,設備ID改變的概率。最後,設計出合理方案,對造成不利的因素進行列舉。
A.android_id:
什麼是android_id呢?當設備在第一次啟動時,系統會隨機產生一個64位的數字,然後以16進制的形式保存在設備上,且API提供了獲取這一參數的方法:
這就是android_id,當設備重新初始化或者刷機的時候,會被重置。
除此以外,android_id還有其他的bug,比如:
1.不同的設備可能會產生相同的android_id。
2.有的廠商設備無法獲取android_id,會返回null。
3.對於CDMA的設備,ANDROID_ID和TelephonyManager.getDeviceId() 的值相同。
4.不同的android系統版本穩定性不同。
B.硬體序列號(SERIAL)
API給的解釋是:
A hardware serial number, if available.(一個硬體的序列碼,如果有效的話)
so,雖然逗塌我沒有用幾百台手機測試,也能知道這個值有時候是無效的,說的這么隱晦。
C.指紋
fingerprint:設備的唯一標識。由設備的多個信息拼接合成。
也是在JavaScript才接觸到這個單詞」fingerprint「,這個詞也很生動,意思是能大概的標識一個設備,像指紋一樣,但不排除重復的可能性。
理論上講用這個屬性是可以標識一個設備的,但是其實並不是,兩台一摸一樣的新手機,這個值相同的可能性是很多的。為了更加進一步的精確,後面還會介紹幾個屬性,並把幾個屬性結合在一起,生成一個接近100%的UUID。
D.android系統提供了獲取android系統版本號,生產廠商,固件版本推出時間的API.
E.android系統提供了當前android設備是12或24小時制顯示時間的API,
F.android系統提供了當前android設備的修訂版本列表,顯示屏,主板等等參數。
G.可以允許用戶根據需求用自定義字元串去為FP做貢獻,比如IP地址等
方案:
在不需要用戶許可權的前提下,網上最完美的方案是將android_id和硬體序列號,如果其中任意一種失效就使用另外一種。受FingerPrint2js的啟發,我看了Android獲取系統硬體相關的API,將所有不經常變化且能代表一定用戶群體的屬性都取出來進行MD5運算,包含但不限於依據中所述的信息。准確性還需進一步驗證,但理論上要比FingerPrint2js准確性高,也在網上給出的比較好的方案基礎上進一步縮小了FP可能重復的概率。
1.第一次進入APP時,獲取系統相關配置信息生成FP,存入SP。
2.每次訪問,先從SP取,沒有再通過相關配置信息生成FP,存入SP。
3.封裝成jar,只給用戶暴露出獲取ID的介面、傳遞自定義信息構建FP的介面以及第一次安裝時間戳的介面(或設置標簽調用的介面)
單純對於FP而言,有兩個主要問題需要解決,一是FP重復的問題,相同配置的新設備重復可能性極大,增多給FP貢獻的因素的數量,可以有效降低重復率。二是FP改變的問題,貢獻FP的生成因素的其中一個如果改變,FP就會改變。所以如果FP的貢獻因素數量過多,導致FP改變的概率也就變大,所以說客戶要在兩者之間做一個很好的平衡。
對比:
為android FP做貢獻的各配置參數:(示例以6.0的華為榮耀8為例)
1.Android_ID:Settings.System.getString(context.getContentResolver(), Settings.System.ANDROID_ID) //低版本穩定,高版本不穩定 示例:295a4fbf716094ee
2.Build.SERIAL 設備序列號(有的設備無法獲取) 示例:WTK7N16923005607
3.Build.FINGERPRINT 設備指紋(同樣的新設備該值應該是一樣的) 示例:honor/FRD-AL00/HWFRD:6.0/HUAWEIFRD-AL00/C00B171:user/release-keys
4.Build.TIME 固件推出日期 示例:1477442228000
5.Build.VERSION.INCREMENTAL 源碼控製版本號 示例: C00B171
6.Build.getRadioVersion() 獲取無線電固件版本 示例:21.210.03.00.031,21.210.03.00.031
7.Build.HARDWARE 硬體名稱 示例:hi3650
8.Build.VERSION.SECURITY_PATCH 用戶可見安全補丁level(這里我得到的是日期,可能是補丁修復的時間)示例:2016-10-01
9.當前設備是12/24時制:Settings.System.getString(context.getContentResolver(), Settings.System.TIME_12_24) 示例:null(有的手機可以獲取)
10.Build.VERSION.SDK_INT SDK版本號 (一般講是與系統版本號一一對應的) 示例:23
11.Build.SUPPORTED_32_BIT_ABIS 支持32位ABIs的列表(數值)示例:[armeabi-v7a,armeabi]
12.Build.SUPPORTED_64_BIT_ABIS 支持64位ABIs的列表(數值)示例:[arm64-v8a]
13.Build.BOOTLOADER 系統啟動程序版本號 示例:unknown
14.Build.VERSION.RELEASE 用戶可見版本 示例: 6.0
16.Build.BOARD 主板 示例:FRD-AL00
17.Build.BRAND 系統定製商 示例:honor
21.Build.HOST 示例:huawei-RH2288H-V2-12L
23.Build.MANUFACTURER 產品/硬體的製造商 示例:HUAWEI
25.Build.PRODUCT 產品的名稱 示例:FRD-AL00
26.Build.TAGS 描述Build的標簽(Comma-separated tags describing the build, like "unsigned,debug".) 示例:release-keys
28.Build.USER 描述Build的USER 示例:jslave
31.Build.VERSION.BASE_OS 基帶版本 The base OS build the proct is based on. 示例:空值
32.自定義字元串或自定義數組
㈧ iOS設備唯一標識符
一、 現有方案
1、UDID(Unique Device Identifier)
獲取方法:[[UIDevice currentDevice] uniqueIdentfier]
不足:iOS5之後,該方法返回的結果在培液所有應用中都相同,並且卸載應用、刷機、還原設備均不會發生改變,該方法被標記為廢棄!最終,在2013年5月1號之後,AppStore禁止任何使用該方法的應用上架。iOS7中對外公開的API中已經移除了該方法!
2、保存在NSUserDefault中的UUID
獲取方法:http://www.cnblogs.com/DoNetCShap/p/5175401.html
在iOS5將UDID標為廢棄之後,官方提供的替代方案。即使用CFUUIDCreate生成一個UUID,並將之保存在NSUserDefault中,用它作為設備標識符。
在iOS6之後,蘋果更推出NSUUID來替代CFUUIDCreate,並將之保存在NSUserDefault中,用它作為設備標識符。
不足:應用被卸載之後,會生成一個新的字元串,更不用提刷機、還原設備了。
3、MAC Address
獲取方法:http://blog.csdn.net/doubleuto/article/details/6599516
MAC Address方案簡介:MAC地址在網路上用來區分設備的唯一性,接入網路的設備都有一個MAC地址,他們肯定都是不同的,是唯一的。一部iPhone上可能有多個MAC地址,包括WIFI的、SIM的等,但是iTouch和iPad上就有一個WIFI的,因此只需獲取WIFI的MAC地址就並賀可以非常好的標識設備唯一性。那麼,如何使用Mac地址生成設備的唯一標識呢?主要分三種:1、直接使用「MAC Address」2、使用「MD5(MAC Address)」3、使用「MD5(Mac Address+bundle_id)」獲得「機器+應用」的唯一標識(現在仍可借鑒,可以增加安全性)
不足:蘋果並不希望有人通過MAC地址來分辨用戶,所以如果你在iOS7系統上查詢MAC地址,所有設備返回值是一樣的。
4、OPEN UDID
獲取方法:https://github.com/ylechelle/OpenUDID
OPEN UDID方案簡介:當設備裝上第一個使用OpenUDID方案的應用程序第一次調試時,會生成一個唯一識別碼,追加8為隨機數保持了40位的UDID,並且利用了NSUserDefaults類將配蔽物識別碼進行了保存。但是當應用刪除,UserDefaults同樣會被清空,為了避免重新生成唯一識別碼,該方案還使用到了UIPasteboard類(設備剪切板),將識別碼同時保存到了UIPasteboard中。當設備上安裝第二個使用了OpenUDID方案的應用程序,將會從UIPasteboard中獲取唯一識別碼,這里取到的就是之前第一個應用保存到UIPasteboard中的。
不足:當將設備上「同一開發商」所有使用了OpenUDID方案的應用程序刪除,且設備關機重啟,重裝應用程序去獲取OpenUDID,此時OpenUDID變化。
5、SecureUDID
SecureUDID方案簡介:與OpenUDID其實差不多,只是初始獲取的唯一識別碼稍有不同。
6、廣告標示符(IDFA-identifierForIdentifier)
獲取方法:[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
廣告標示符簡介:是iOS 6中另外一個新的方法,提供了一個方法advertisingIdentifier,通過調用該方法會返回一個NSUUID實例,最後可以獲得一個UUID,由系統存儲著的。只有軟體有廣告的軟體才可以使用這個,否則是禁止上架的。
不足:有幾種情況下,會重新生成廣告標示符。如果用戶完全重置系統((設置程序 -> 通用 -> 還原 -> 還原位置與隱私) ,這個廣告標示符會重新生成。另外如果用戶明確的還原廣告(設置程序-> 通用 -> 關於本機 -> 廣告 -> 還原廣告標示符) ,那麼廣告標示符也會重新生成。關於廣告標示符的還原,有一點需要注意:如果程序在後台運行,此時用戶「還原廣告標示符」,然後再回到程序中,此時獲取廣 告標示符並不會立即獲得還原後的標示符。必須要終止程序,然後再重新啟動程序,才能獲得還原後的廣告標示符。
7、Vendor標示符/廠商唯一標識符(IDFV-identifierForVendor)
獲取方法:[[[UIDevice currentDevice] identifierForVendor] UUIDString]
Vendor標示符簡介:在iOS 6中新增的,跟advertisingIdentifier一樣,該方法返回的是一個 NSUUID對象,可以獲得一個UUID。是給Vendor標識用戶用的,每個設備在所屬同一個Vender的應用里,都有相同的值。
不足:如果滿足條件「相同的一個程序裡面-相同的vendor-相同的設備」,那麼獲取到的這個屬性值就不會變。如果是「相同的程序-相同的設備-不同的vendor,或者是相同的程序-不同的設備-無論是否相同的vendor」這樣的情況,那麼這個值是不會相同的。如果用戶將屬於此Vender的所有App卸載,則Vendor標示符的值會被重置,即再重裝此Vender的App,Vendor標示符的值和之前不同。
8、推送token+bundle_id
獲取方法:注冊推送服務從APNs獲取device token
不足:在官方文檔上建議開發者在每次啟動應用時應該都向APNs獲取device token並上傳給伺服器。從這句話來看,device token是會變化的!
二、 比較分析
UDID和MAC Address已經完全棄用;推送官方提供但是是否變化沒有明確結論所以也pass;OPEN UDID和SecureUDID借用第三方,但是卸載後會變;UUID官方提供但是卸載後會變;IDFA是官方推薦的,存在於系統裡面的,卸載不變;IDFV也是官方推薦的但是卸載後會變。
從上面我們可以看出其實蘋果官方沒有給我們很好的iOS設備唯一標識,大多數軟體卸載後就會變了,官方推薦的IDFA是相對來說存在於系統裡面,穩定性好了很多,但是仍然存在兩個問題用戶完全重置系統和用戶明確的還原廣告仍然會導致變化。對於系統刷機更是完全沒辦法。
三、 結論
1、變化是不可避免的。我們只能做到兩點:第一我們要保證變化後和已有的盡量不一樣第二我們要盡量保證不變化。
2、從第一點看,我們可以有一個實現方案:
後台配置設備ID,保證分配的每一個ID是唯一的,用戶第一次安裝軟體向後台請求分配一個ID,並且用KeyChain進行存儲。第二次安裝時候用KeyChain獲取就可以了。
這里使用安裝獲取和KeyChain存儲的目的就是降低後台ID存儲容量的壓力。
優點:100%保證了設備ID的唯一。
缺點:後台設備ID存儲容量較大,運算也很大。
3、從第二點看,我們沒有辦法保證一個設備的ID永遠不變化。所以沒有完全滿足第二點的方案。
4、結合兩點和第一個的缺點來看:我們可以再有一個方案:
用戶第一次安裝軟體獲取UUID,並且用KeyChain進行存儲。第二次安裝時候用KeyChain獲取就可以了。
方案code參考:http://www.cnblogs.com/DoNetCShap/p/5175401.html
為了解決第一個的缺點我們使用蘋果官方或者第三方提供的ID作為設備ID,為了盡量滿足第二點我們使用KeyChain進行存儲,為了盡量滿足第三點我們要選擇第三方提供ID的重復率盡可能低,這里我們選擇了UUID。
為什麼選擇UUID?
UUID: 即Universally Unique IDentifier(全局唯一標識符) 也稱作 GUID (Globally Unique Identifier,全球唯一標識符) 。
UUID是一個128位長的數字,一般用16進製表示。演算法的核心思想是結合機器的網卡、當地時間、一個隨即數來生成UUID。
從理論上講,如果一台機器每秒產生10000000個UUID,則可以保證(概率意義上)3240年不重復。
㈨ 網路安全素質教育有操作題嗎
網路安全素質教育有操作題。包括以下喊猛方面:
1、網路危險及防範:如何識別網路釣魚、惡意軟體、網路欺詐等網路危險行為,以及如何採取相應的防範蘆滲陵措施。
2、密碼安全:如何設置和管理安全的密碼,如何避免密碼泄露和被破解。
3、網路隱私保護:如何保陪戚護個人隱私,如何防範個人信息被泄露和濫用。
4、網路攻擊與防禦:如何識別和防範網路攻擊,如何保護自己的網路安全。
5、網路文明:如何遵守網路公德,如何維護網路秩序和文明。