iT邦幫忙

0

網頁設計-同一部影片的src隨時間過去也不同??

  • 分享至 

  • xImage

我最近在想一個問題:
如果我今天要寫一個網站,上面放我的一部課程影片。

要防止一個購課過的會員不小心外傳scr的url,
舉例,在這個影片src後面'mp4?='
加上一些我認證的參數&expire時間。

不過我記得似乎有另一種做法,就像我看到某些網站他的src,
今天是長成:
https://domain.com/F/videos/hls/d2/f6/35/d2f6352edb613da-1/hls.m3u8

時間過去之後變成:
https://domain.com/F/videos/hls/d2/f6/35/另一串$%@%@%$#%$#%/hls.m3u8

詳細差別我不記得,我只知道他並非用?=加上參數的做法

1.這樣子的原理是什麼呢?
難不成說我要不定時的修改檔案放的資料位置、以及網頁嗎?

2.還有沒有除了以上兩種,的實作方法?

3.資安的角度上,這兩種有什麼差別嗎?
會不會哪一種比較不安全?或是承上題,有其他更安全更好的方法?

以上謝謝前輩們。

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
Ray
iT邦大神 1 級 ‧ 2023-01-09 03:07:30
最佳解答

這是 S3 物件儲存器的功能之一, 叫做:
Pre-Signed URL

他可以對原始的物件儲存位址, 透過金鑰運算, 產生出一個新的位址, 這是一個假的虛擬位址, 管理者不需要真的去搬動物件的位置, 只要用戶連到 S3 的這個虛擬位址, 他內部就知道該去找哪一個原始檔案出來.

Pre-Signed URL 可以設定過期時間, 從他產生出來開始算起, 如果到期了, 這個 URL 就沒有用了 (但是原始物件仍然存在), 即使用戶持續去連 S3 這個過期的 URL, 也只會被拒絕.

管理者可以從原始物件, 不斷產生各種有時間限制的 Pre-Signed URL 給不同的人使用, 所以每個用戶拿到的 URL 可能都不相同, 也會因時間流逝而有變化, 或者被註銷. 通常這會用在物件的保護, 避免某個用戶透過 URL 列舉手法, 大量撈走不屬於他的物件檔案.


回到你的方法:

你在 URL 後面加上 expire time, 雖然可以讓你自己的程式知道, 但用戶也看得到你用來控制的方法, 因為已經有了認證資訊, 他只要設法送出一個後面 expire time 在合法時間內的 URL, 就可以取得你的檔案.

S3 Pre-Signed URL 則不同, 他是用金鑰算出來的數位簽章, 用戶手上沒有你的 Private Key, 無法算出同樣的 URL 簽章, 連進來 S3 發現簽章不對, 就會阻止他盜用. 如果簽章過關, 但是時間已經過期, S3 同樣也會阻擋他.

akajoke iT邦新手 5 級 ‧ 2023-01-09 15:53:10 檢舉

@raytracy 大神文筆真流暢,寫得很清楚。

您說Pre-Signed URL資安上比較安全,那我想補充問題是:

若我的URL後面不只是expire,還有一個加密token參數,
是否也可以達到保護物件的作用?

就算對方調整expire,我的token也可以阻擋對方?
如此一來資安方面,這兩種方法都「同等」安全?

Ray iT邦大神 1 級 ‧ 2023-01-09 18:05:59 檢舉

那要看你的 Token 邏輯是否有辦法被惡意者猜到?

S3 提供的 Pre-sign 是用 PKI 金鑰加密出來的, 由於 PKI 架構已經多年以來, 被學術界用多篇論文驗證:具有數學上的不可破解性, 所以我們可以相信: 這樣算出來的 URL, 無法被人用列舉的方式破解或偽造.

您自己做這個 Token 當然沒有問題, 關鍵只是在: 她的強度有多高? 有沒有人可以幫你佐證這個強度? (你/我/她...猜不到, 並不代表第四個人也猜不到; 一萬個人解不開, 不代表第一萬零一人也解不開)

如果你也採用 PKI 架構來產生 Token, 我們不需要深入討論就可以相信她 (因為已經有太多篇論文驗證過此架構, 除非你能夠推翻數學定理); 但如果你用 UUID/GUID 的方式來產生, 那她的不可破解性可能就沒有那麼高了...

甚至, 有人用: 序號方式, 自訂編碼, 時間組合方式, 多因素組合方式...來產生, 她的強度可能都遠遜於 PKI, 在某些情境下, 風險仍存在. 只要沒有被全世界的論文攻擊過許多年, 我們都難以承認她足夠強大.

資安議題很吃理論驗證, 理論沒被數學邏輯驗證過的, 都可能有風險.

akajoke iT邦新手 5 級 ‧ 2023-01-25 00:28:18 檢舉

謝謝大師的補充,我來給您最佳解答了。已經筆記!!

1
eric_hsu58
iT邦新手 3 級 ‧ 2023-01-09 13:58:31

我自己實作過類似的網頁,將本來放在後面的的參數全部都編碼,例如:

原本的參數列是 www.xxx.com/movie.aspx?file=test.mp4&date=20230109
把後面的參數文字全部加密編碼
變成類似 www.xxx.com/movie.aspx?msg=AnJsu2j89JsjNskaIklw86Sk

網頁主機端收到使用者的連線需求,把後面字串進行解碼可以取得原本字串可以確認這個連結是否仍可以正常觀看影片,或者可以把使用者的郵件帳號也編碼進去,可以知道這串連結屬於哪個使用者帳號。

akajoke iT邦新手 5 級 ‧ 2023-01-09 15:46:50 檢舉

@eric_hsu58 很寶貴的經驗分享,學到了。
很棒的方法,我沒想過,謝謝您。

我要發表回答

立即登入回答