程式開發者談Facebook上的授權以及帳號被盜的觀念

程式開發者談Facebook上的授權以及帳號被盜的觀念

編者註:當你在Facebook上按需要授權的app時,有注意過會拿到你什麼樣的權限以及所代表的意義嗎?撰寫這篇文章的作者王景弘花了不少的時間,以所作的Facebook 廣告社團檢查器」為例,用淺顯的文字來說明相關的觀念。希望大家對於這方面有個清楚的概念,不要疏忽應該要擔心的或是對於某項授權又太過於擔心。因此經過作者同意將全文轉引過來。底下文章的引用,在不影響原意下只有做簡單的編輯,以方便閱讀

 

有關 spam group 的授權( http://spamgroup.tonyq.org ,就是指Facebook 廣告社團檢查器)

雖然當初取「取得授權」,是希望使用者知道自己在幹麼沒錯,我可以把按鈕改名叫「登入」或「檢查」,然後我可以保證使用者看到對話框也不會想太多就點下去。

因為我另一個幫前公司開發的 app 就是這樣幹,事實上大家都這樣幹,你仔細去檢查你 apps 的權限,應該會有很多發現,然後很多人在點同意沒在怕的。

騙 user 乖乖同意很簡單,但我就是想用「取得授權」這個詞,讓你知道你真的在授權我這個 app 作一些事情,我覺得這真的是你應該要知道的。

===========================

但我看到有些人擔心會被盜帳號就不敢授權,這又有點過頭,所以我覺得該講清楚,這篇文章是要來講講「取得授權」是怎麼一回事,你該擔心什麼又不用擔心什麼。

(當然,我是 app 開發者,你可以不相信我講的話、不信任我,那你可以來證明我說的是錯的,或許我的確是錯的,我們歡迎踢館。:p)

 

首先你一定要張大眼睛看清楚按下去後的那個畫面,特別是底下箭頭標示的兩個地方:

程式開發者談Facebook上的授權以及帳號被盜的觀念

 這裡有告訴你,這隻 app 會取得三個資訊,

@ 你的個人資料 (驚)

這聽起來有點模糊,你可以看看底下這張圖片,FB 已經詳細說明了:

程式開發者談Facebook上的授權以及帳號被盜的觀念

 

@ 那可以不取得這個資料嗎?

很抱歉,不行。因為這是預設一定會被拿到的,只要你要作任何 fb 操作,就一定會需要這個,我這隻 app 也需要你朋友的清單(因為要幫朋友檢查),所以我需要取得這權限。

 

@ 那取得個人資料後,可以拿來賣錢嗎?

基本上根據 FB 的規則,我必須在隱私權政策(圖裡面的另一個箭頭)裡面寫清楚資料用途,否則如果我濫用你的資料且你能舉證,我會被告。

但是,這個 app 你只能選擇相信我,不然就是不爽不要用。XD

那有沒有人會拿個資去賣呢,根據我在業界的見歷,的確是有,而且一個個資視完整度從 1 塊到 60 塊不等。

我自己是很不爽有這種事情,但這種事情存在是個事實。

我只能用良心跟你說我不會這麼幹,因為我自己也很討厭浪費我時間的垃圾電話跟廣告,所以我絕對不會去幫助這些人幹這種事,

但在使用 app 時,這的確是個你該考慮的風險,所以你一定要好好看清楚授權跟隱私權政策。

(然後,你要決定你要不要相信這個 app 。)

像是有些號稱分析你的 FB 資料告訴你是啥個性,但結果看起來根本只是來亂的,卻要你發婊動態、資料存取的各種強力權限,我還蠻佩服有人按同意按得下去的。

 

@ 取得朋友清單跟資料?那你可以取得我的"所有"資料(生日、地址、電話)跟傳訊給我的朋友嗎?

有關個資你沒有設定為公開的話,我就拿不到,事實上就這個權限來講我連你的註冊 email 都拿不到。

如果我需要那些權限,你會看到他出現在清單上,這裡有一些權限清單,但是我知道不是寫程式的人應該不會看、看不懂。

https://developers.facebook.com/docs/reference/login/

如果你對任何 app 取得的權限有疑問又信得過我,可以來問我。

 

另外這是 readonly 的權限,能修改得部份會需要另一個權限(會有管理相關字樣),至於能不能傳訊給你的朋友,答案是不行,那不是這個權限被授權的事情。

 

@ 那你能不能登入我的帳號?

答案也是不行,我只能透過 api 查詢你的資料,我不會知道你的密碼、不會知道你的帳號,FB 會給我一段識別碼(稱之為 access_token 的東西),這個識別碼包含權限資訊,每個 app 都不一樣。

然後它跟你的密碼一點關係也沒有,所以理論上不可能因為授權而被登帳號。

(但你如果有授權一個 app 發文,則他的確可能在你不在的情況下幫你發文,只要還在授權期間。)

 

 @ 那什麼是「你的社團」?

這裡指的是你加入的社團清單、你在社團裡面的發文、你在社團裡面做的動態,但是是「僅供讀取」。要管理或幫你發表社團裡面的動態 ex. 幫你邀請朋友 ...etc ,那個權限(manage_group) 現在疑似沒開,這有在 FB有被報 bug (FB bug 一堆,別奇怪),也是我為什麼不能在程式裡面寫自動退出社團的理由。

 

@ 那什麼是「朋友的社團」?

你朋友的社團清單與相關資料,沒有經過你同意、確認我不能取得,一樣是僅供讀取。

--------------------------------

就這隻 app ,你該擔心的事情是:

1.你公開的資料有機會會被取得、轉賣。(但請注意,你公開的資料意味著即使你沒登入,其他人大多也拿得到。)

  如果你想知道你公開多少資料,可以點這連結,裡面是別人授權後可以拿到的。

  https://developers.facebook.com/tools/explorer/?method=GET&path=me

 

2.你可能會洩露你加入哪些社團

如果你加入了一些不能被其他人知道的社團(怎麼覺得有點害羞),這可能會讓你很困擾。

 

3.你可能會洩露你朋友加入了哪些"公開"社團

(秘密跟非公開社團除非你跟他同社團,不然你在 api 的權限是不會知道他有加入的。)

  這個資料有沒有價值,請自行判斷。

 

4.這個網站安全性沒寫好被人家攻破(ex. XSS 攻擊等),而讓別人取得這些權限

  這是有可能的,就跟你在其他網站註冊的會員密碼也可能因為被破解而被知道一樣,你授權給我的權限,也要小心可能被因為這樣而拿去亂來的可能性。

  (題外話,所以請網站開發負責人記得密碼要多層加密,使用者也請盡量不要多個網站共用同一個密碼,特別是扯到錢的。 延伸閱讀:我的密碼沒加密網站  http://plainpass.com/  )

 但是你給我的權限,即使被攻破,取得這些資料對他們有沒有意義,你可以自己斟酌,當然道義上我可以告訴你的是我們都有小心檢查這些漏洞跟問題,並且把這件事情看得很重。

-------------

在這隻 app 你不用擔心的事情:

1.被用來傳訊息問你朋友要不要買點卡,然後看到訊息一堆「你聽過安麗嗎」:因為沒權限。

2.被亂加入社團、被亂退出社團:因為沒權限

3.會被盜帳號:我根本沒有機會知道你密碼,也不能登入。

 (只靠 access_token 作查詢跟做事是不用登入的。)

================================

另外我很高興看到有些朋友有注意到我們有取消授權這個按鈕,

而這顆按鈕按下去真的會幫你取消授權,你在一般的 app 可能很難看到這顆按鈕 ,因為一般的 app 不會假設你只用一次,而我假設你只該用一次。

或者換句話說,我希望你每次來的時候,都能注意到你又授權我一次,

而你也會知道,在你取消授權之後我就沒權限去存取你的資料。

你也比較不會在某天不知道因為什麼理由看到應用程式 tab 時(如下連結),發現你幾年前授權了這個 app 但一直沒有取消、好像也沒啥用到。

https://www.facebook.com/settings?tab=applications

我希望大家能真的注意到你授權一個 app 什麼,然後能知道你有什麼選擇,擔心你真的該擔心的事情。

(附註,因為我們一直在踢到 api request 上限,所以我們現在實際上設定了三個 app 隨機切換, 所以你如果有看到三個名字長很像的 app 的話,這是我們不得已的暫時作法,在此說明之。)

========================

同場加映、安全觀念,facebook 被盜帳號,你知道很多人是因為上那些大陸論壇、甚至是一些台灣的網站,使用跟 facebook 一樣的 email、帳號、密碼,然後那些網站本身安全性作很爛,甚至是那些網站本身就是居心不良的,所以你就被盜帳號嗎?

你知道很有些網站根本安全性防護跟裸體沒什麼兩樣嗎?

這跟他們的會員人數沒有關係,有很多大網站也是出過包,安全性防護本身就是一個需要多方涉獵、高度技術參與的一個主題,還有專門的人在研究這個當飯吃。

網路世界是充滿壞人的,但你至少可以選擇不要所有服務都共用同一組帳號密碼,不然就請抱著被盜帳號也無所謂的心情囉。這還只是第一道最最基本的關卡。

我希望藉著這篇文章作一個拋磚引玉,我們可以來聊聊更多其實你應該要知道的事情。

 


程式開發者談Facebook上的授權以及帳號被盜的觀念

 

↓↓↓↓↓↓加入癮科技粉絲團,有更多歡樂有趣的科技新聞↓↓↓↓↓↓