如何用BOM獲取用戶的短信發(fā)送權(quán)限?

網(wǎng)頁無法通過bom直接獲取短信發(fā)送權(quán)限,這是瀏覽器安全模型的設(shè)計(jì)原則;1. 瀏覽器禁止網(wǎng)頁代碼訪問敏感硬件或系統(tǒng)功能,防止惡意行為;2. 可通過sms:協(xié)議啟動短信應(yīng)用,但需用戶手動發(fā)送;3. web share api允許用戶選擇短信分享,但不能靜默發(fā)送;4. 網(wǎng)頁無直接api訪問短信模塊,所有敏感權(quán)限必須用戶明確授權(quán);5. 實(shí)際業(yè)務(wù)中通過服務(wù)器調(diào)用第三方短信服務(wù)完成發(fā)送,確保安全合規(guī)。

如何用BOM獲取用戶的短信發(fā)送權(quán)限?

用BOM(Browser Object Model)直接獲取用戶短信發(fā)送權(quán)限,這在現(xiàn)代瀏覽器環(huán)境中幾乎是不可能的,或者說,根本不是BOM能觸及的范疇。瀏覽器的安全模型設(shè)計(jì),從根本上就杜絕了網(wǎng)頁代碼直接訪問用戶設(shè)備上的敏感硬件或系統(tǒng)功能,比如直接調(diào)用短信發(fā)送接口。這主要是為了保護(hù)用戶隱私和設(shè)備安全,避免惡意網(wǎng)站未經(jīng)授權(quán)地發(fā)送短信、竊取信息,或者產(chǎn)生不必要的費(fèi)用。任何嘗試直接這么做的代碼都會被瀏覽器安全機(jī)制攔截。

如何用BOM獲取用戶的短信發(fā)送權(quán)限?

解決方案

你無法通過BOM直接獲取或使用用戶的短信發(fā)送權(quán)限。瀏覽器對網(wǎng)頁的權(quán)限控制非常嚴(yán)格,像短信發(fā)送這種涉及用戶資費(fèi)和隱私的敏感操作,是絕對不會開放給JavaScript直接調(diào)用的。如果一個(gè)網(wǎng)站能夠不經(jīng)用戶同意就發(fā)送短信,那將是災(zāi)難性的安全漏洞。

如何用BOM獲取用戶的短信發(fā)送權(quán)限?

所以,核心的“解決方案”其實(shí)是理解:這不是一個(gè)技術(shù)難題,而是一個(gè)安全與權(quán)限的設(shè)計(jì)原則問題。網(wǎng)頁能做的是通過特定的協(xié)議或API,在用戶明確同意并操作的情況下,將請求轉(zhuǎn)發(fā)給操作系統(tǒng)或已安裝的應(yīng)用程序來完成。BOM主要處理的是瀏覽器窗口、文檔、歷史記錄等與瀏覽器本身運(yùn)行環(huán)境相關(guān)的對象,它不具備與操作系統(tǒng)底層硬件深度交互的能力。

網(wǎng)頁如何安全地與短信功能交互?

當(dāng)我們在談?wù)摼W(wǎng)頁與短信的交互時(shí),通常指的是兩種情況,而且它們都離不開用戶的明確參與。第一種是利用sms:協(xié)議。這是一種URL協(xié)議,你可以創(chuàng)建一個(gè)鏈接,當(dāng)用戶點(diǎn)擊時(shí),它會嘗試打開用戶設(shè)備上默認(rèn)的短信應(yīng)用,并預(yù)填充收件人或短信內(nèi)容。比如:

如何用BOM獲取用戶的短信發(fā)送權(quán)限?

<a href="sms:+1234567890?body=Hello%20there!">發(fā)送短信給客服</a>

這種方式的好處是簡單直接,但缺點(diǎn)也很明顯:它只是“建議”用戶發(fā)送短信,用戶需要手動確認(rèn)并點(diǎn)擊發(fā)送。網(wǎng)頁本身并沒有發(fā)送短信的權(quán)限,它只是一個(gè)“啟動器”。

另一種方式是利用Web Share API,這是一個(gè)比較新的瀏覽器API,旨在讓網(wǎng)頁能夠利用操作系統(tǒng)原生的分享功能。如果用戶設(shè)備上安裝了短信應(yīng)用,并且瀏覽器支持Web Share API,那么在調(diào)用分享時(shí),短信應(yīng)用可能會作為分享目標(biāo)之一出現(xiàn)。

if (navigator.share) {   navigator.share({     title: '我的分享',     text: '這是我想分享的內(nèi)容。',     url: 'https://example.com'   })   .then(() => console.log('分享成功'))   .catch((error) => console.error('分享失敗', error)); } else {   // 提供備用分享方案   console.log('Web Share API 不支持'); }

但這同樣是用戶驅(qū)動的,網(wǎng)頁無法強(qiáng)制或靜默地發(fā)送短信。瀏覽器只是提供了一個(gè)接口,讓用戶可以選擇將內(nèi)容分享到短信、郵件、社交媒體等渠道。我個(gè)人覺得,這種設(shè)計(jì)思路是符合現(xiàn)代網(wǎng)絡(luò)安全哲學(xué)的:權(quán)力在用戶手中。

瀏覽器對敏感權(quán)限(如短信)的限制有哪些?

瀏覽器對敏感權(quán)限的限制是其核心安全模型的一部分,這套模型建立在“沙盒”和“同源策略”的基礎(chǔ)之上。簡單來說,每個(gè)網(wǎng)頁都被限制在一個(gè)獨(dú)立的、受控的“沙盒”環(huán)境中運(yùn)行,它們之間不能隨意互相訪問數(shù)據(jù),也不能隨意訪問用戶操作系統(tǒng)或硬件。

具體到短信這類敏感權(quán)限,瀏覽器采取了以下幾個(gè)層面的限制:

  1. 無直接API暴露: 瀏覽器根本沒有提供任何JavaScript API,允許網(wǎng)頁直接訪問手機(jī)的撥號器、短信模塊、攝像頭(未經(jīng)用戶明確許可)、麥克風(fēng)(未經(jīng)用戶明確許可)、文件系統(tǒng)等底層硬件或系統(tǒng)功能。BOM更是如此,它處理的都是瀏覽器層面的對象。
  2. 用戶明確授權(quán): 對于少數(shù)確實(shí)需要與用戶設(shè)備交互的功能(比如地理位置、攝像頭、麥克風(fēng)、通知),瀏覽器會彈出明確的權(quán)限請求對話框,必須由用戶點(diǎn)擊“允許”后才能使用。而且,這些權(quán)限通常是臨時(shí)的,或者可以隨時(shí)在瀏覽器設(shè)置中撤銷。短信發(fā)送權(quán)限遠(yuǎn)超這些,因?yàn)樗婕敖?jīng)濟(jì)成本和更深層次的隱私泄露風(fēng)險(xiǎn),所以連請求的選項(xiàng)都沒有。
  3. 協(xié)議處理機(jī)制: 像sms:、tel:、mailto:這樣的協(xié)議,瀏覽器不會直接處理它們,而是將這些請求“轉(zhuǎn)交”給操作系統(tǒng),由操作系統(tǒng)來決定用哪個(gè)默認(rèn)應(yīng)用來打開。這就像你點(diǎn)擊一個(gè).docx文件,瀏覽器不會自己打開word文檔,而是把文件下載下來,然后讓你的電腦去用Word軟件打開。網(wǎng)頁只是一個(gè)中介,沒有執(zhí)行權(quán)。

從我一個(gè)開發(fā)者的角度看,這種限制是絕對必要的。想象一下,如果一個(gè)惡意網(wǎng)站能通過一個(gè)簡單的JavaScript腳本就給你的聯(lián)系人列表群發(fā)短信,那后果不堪設(shè)想。這些限制雖然有時(shí)會讓開發(fā)人員覺得束手束腳,但它構(gòu)建了我們今天安全的網(wǎng)絡(luò)環(huán)境。

Web應(yīng)用如何通過間接方式觸發(fā)短信發(fā)送?

既然網(wǎng)頁不能直接發(fā)送短信,那么Web應(yīng)用在實(shí)際業(yè)務(wù)中需要發(fā)送短信(例如驗(yàn)證碼、通知)時(shí),又是如何實(shí)現(xiàn)的呢?答案是:通過服務(wù)器端。

這是一種非常常見的模式,也是目前最安全、最主流的解決方案。其核心思路是:

  1. 用戶在網(wǎng)頁上發(fā)起請求: 例如,用戶點(diǎn)擊“獲取驗(yàn)證碼”按鈕,或者完成一個(gè)訂單。
  2. 網(wǎng)頁將請求發(fā)送到自己的服務(wù)器: 這個(gè)請求通常包含用戶的手機(jī)號碼(由用戶在網(wǎng)頁上輸入)。
  3. 服務(wù)器端處理請求: 你的Web服務(wù)器接收到這個(gè)請求后,會調(diào)用一個(gè)第三方短信服務(wù)提供商(如Twilio、阿里云短信、騰訊云短信等)的API。
  4. 短信服務(wù)商發(fā)送短信: 這個(gè)短信服務(wù)商才是真正擁有與運(yùn)營商對接能力、能夠發(fā)送短信的實(shí)體。它會按照你的服務(wù)器指令,將短信發(fā)送到用戶的手機(jī)。
  5. 結(jié)果反饋: 短信服務(wù)商會將發(fā)送結(jié)果(成功或失?。┓祷亟o你的服務(wù)器,服務(wù)器再將結(jié)果反饋給前端網(wǎng)頁。

在這個(gè)過程中,用戶的瀏覽器和BOM完全沒有參與到短信的發(fā)送環(huán)節(jié)。瀏覽器只是負(fù)責(zé)收集用戶輸入、展示信息,并將用戶的意圖(例如“請給我發(fā)個(gè)驗(yàn)證碼”)傳遞給你的服務(wù)器。短信的發(fā)送權(quán)限和實(shí)際操作,都發(fā)生在你的服務(wù)器和專業(yè)的短信服務(wù)商之間。

這種間接方式的優(yōu)點(diǎn)是顯而易見的:

  • 安全: 用戶的手機(jī)號碼和短信內(nèi)容不會直接暴露在客戶端JavaScript中,發(fā)送權(quán)限也完全掌握在服務(wù)器端,風(fēng)險(xiǎn)可控。
  • 可靠: 專業(yè)的短信服務(wù)商通常有高可用性、高并發(fā)處理能力,以及對短信發(fā)送成功率的保障。
  • 合規(guī): 服務(wù)器端發(fā)送短信更容易滿足各國對短信營銷、通知的法律法規(guī)要求。

所以,如果你真的需要Web應(yīng)用具備發(fā)送短信的能力,忘記BOM,忘記瀏覽器權(quán)限,轉(zhuǎn)而擁抱服務(wù)器端和第三方短信服務(wù)商的解決方案吧。這才是正道。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享