2018年2月1日 星期四

2018.2.1 標記為濫用,心得紀錄(純感想與流程)

2018.2.1 標記為濫用,心得紀錄(純感想與流程)


這是一件不太容易遇到的事情:「標記為濫用」。在別人家的大本營做不好的事情,又用別人家的搜尋引擎搜尋如何處理,又在別人家的部落格發這篇心得,也算久違之後難得有動力寫篇文章。

前情提要:JN編修了程式,這個程式是個報名系統。之前的報名系統,使用者有提及一個狀況:在尖峰時段,有部分人會遺漏掉回信或缺少資料。這個情況算是很常見的問題,當圖時有大量報名者送出,而大量回覆平行運算寫入,以至於同時讀寫到同一行(正常情況下是新送出的回覆會到新的最後一行),而最後只留下最新的一筆。

要解決這個問題,就要延遲寫入,避開多數回覆同時執行寫入。就JN所知,在有「佇列 queue」或「鎖 lock」兩種方式能處理這問題。然而沒有找到佇列指令,但是有發現鎖指令。於是在程式碼中加了鎖,就能達到非同步讀取。因為只有得到鎖的線程才能讀取,其他沒有鎖的就會等待直到拿到鎖。

然而,為了測試大量回覆送出是否會出現異常,JN一共用了五十筆送出,每個送出都上傳3MB大小的檔案。這次測試之後,就發現報名系統其實就是平行運算的問題。關鍵字就是「回覆缺失、大量短時間內」。之後JN把「鎖」寫進程式內,再以三十筆回覆測試之。
(JN所參考的寫法)

這次的結果,回覆都有被寫入資料表裡而沒有任何缺失,只是收到的順序不一定是照送出的順序。大功告成。就不再需要測試這種大量送出的狀況。

卻也釀成帳號「標記為濫用」。


「標記為濫用」是怎麼樣子呢?就是上傳的檔案會被標上一隻小旗子,這些有小旗子的檔案都是「標記為濫用」,被標記的檔案就無法給其他人查看,更無法建立副本。對於一般團隊,這個限制真的很麻煩,自己上傳的檔案都無法分享給別人看。更何況是非自然人的帳戶,大家共用的帳號被標記起來,豈不是許多資料就無法像平常般傳給同事們了。

雖然很麻煩,但另一方面,這一塊也是JN一直所擔心的地方。JN檢查之前的報名系統,便發現也一直提及「安全」的問題,但是請JN編修程式的人一點都不在意這一塊。「安全有比方便重要嗎?」「應該不會有人這樣做吧?」JN聽到的當下是很傻眼的,「被大量傳送攻擊」這個議題就輕易被忽視過去。只要被一次這樣攻擊,就會導致整個系統從此無法順利運作。更何況操作系統的又不是JN,出了甚麼狀況JN也不會有甚麼損失。

想一想就算了,反正寫多少也就多賺工錢,拿錢做事不要想太多,也不要做太多。

但是!對於異常流量的警示,那家公司真的十分厲害。JN欽佩這種會對於「安全」上做了很棒措施的公司,不像委託JN修改程式的人一點都不在乎「安全」這個問題。之前JN也測試過用程式去抓取一些資料,一下子就會被擋下來,對於想收集資料的人,這真的令人厭煩,但不過也就鎖IP,換IP就能繼續抓。但「標記為濫用」應該是鎖帳號,而且快一週了都沒有解鎖,也不知道多久後才不會有事,或是從此就背負一輩子。

也不知道甚麼時候才能解開「標記為濫用」。但是對於不太行的電腦操作者,又會給JN下怎麼樣的任性要求,一想到就會頭痛啊。