星期三, 9月 11, 2019

CSRF is dead?

前幾天在 Hacker news 上看到 Scott Helme 寫的這篇 CSRF is (really) dead ,一直沒看。這兩天開始看,一開始 Scott Helme 先提,你應該先看這篇 Cross-Site Request Forgery is dead! ,再回頭來看。

我先看了第一段,心裡納悶這樣怎麼會有什麼危險呢?後來找了另外兩篇中文來看 (加快理解):
我蠻推第一篇 Huli 寫的文章,寫的很清楚。簡單的說,就是利用 cookie ,當別的網頁裡有嵌入對其他網頁的存取時,會因為 cookie 的關係而有存取權,如果網站沒有做適當的檢查,那麼使用者的資料就有可能遭到竊取或被錯誤的存取。這也是為什麼後來幾乎每套 web framework 都會有 CSRF token 的處理。
回頭來講,Scott Helme 會說 CSRF 死的原因很簡單,就是有了 SameSite cookie,在 2019 年6月以後幾乎各家都支援 SameSite cookie 了 – Can I use samesite cookie? 所以現在只要在 Set-Cookie 時,後面多加 SameSite=Strict 或 SameSite=Lax 就可以避免 CSRF 的風險了。
等到真正普及可能還要一到兩年的時間吧。

星期二, 9月 10, 2019

apk add 的 --virtual

Reduce Docker image sizes using Alpine 這篇學到的,add 時加上 –virtual,是暫時性的為這次加的 package 納入群組。之後若不需要這些 package,就可以在 del 時,指定這個名稱,就可以移除前次加入的 packages。
apk add --no-cache --virtual .build-deps gcc freetype-dev musl-dev
apk del .build-deps

星期一, 9月 09, 2019

電影流水帳(2019/07/01~2019/08/31)

sharks

The Meg

忘了是在 HBO  看到還是在東森洋片台看到,我是覺得這故事就很單純的把巨齒鯊描述成殘酷、噬血的生物,然後人類為了自衛就把它給幹掉這樣,未免也太不符合目前的保護動物潮流了吧?!
我沒全部看完,大致只看了後半段。大略是從他們去探勘,然後發現了巨齒鯊,後來好不容易逃回去鑽探平台開始。回去鑽探平台以後,大夥以為沒事了,主事者也聲稱他已經打了電話給軍隊,要他們派兵去消滅鯊魚。可是,主事者暗地裡帶了一伙人去丟炸彈,想消滅鯊魚。豈料,畫虎不成反類犬,他們失敗了,被鯊魚殺死。更糟的是,鯊魚還往人多的沙灘去了。鑽探平台的一行人隔天才發現主事者不見了,也沒聯絡軍隊,事情一整個不對勁。一伙人經過商量以後,決定自己來阻止鯊魚。他們趕緊進行準備,並且開船前往沙灘,要來阻止鯊魚。可惜來不及了,鯊魚已經開始攻擊人類。他們趕到的時候,就趕緊進行預定的計劃,進行誘殺。經過一番奮戰,終於消滅了鯊魚,事情算是圓滿落幕。

Crazy Rich Asians

故事意外的蠻勵志的,本來以為會是諷刺或是貶低亞洲人的,但並沒有。雖然故事有點八股,不過,大家都喜歡快樂結局,我也覺得故事收的不錯。裡面的演員都一時之選,演的都很好。
Nick Young 在美國認識了 Rachel Chu ,熱戀了好些日子,Nick Young 家親戚舉辦婚禮,所以找了 Nick Young 回去。Nick Young 就想女友 Rachel 前些日子嚷嚷著說要去新加坡找閨密,就邀請她一同前往,也順便帶她回去看看家人。Rachel Chu 從小在美國長大,是媽媽撫養長大的,只是媽媽從來沒跟他提過父親的事情。長大以後,在大學裡教授經濟學。Rachel 一直以為 Nick 只是個普通的上班族,到了要上飛機去新加坡那天,她才知道 Nick 不簡單,Nick 的家裡也不簡單。Rachel 雖然心裡犯嘀咕,嘴裏怪 Nick 怎麼都不說,可是並不怎麼在乎這事情。到了新加坡,兩人跟新郎新娘碰面,一同去吃飯、逛逛走走,Rachel 也去找了閨密。只是真正到了 Nick 家以後,才知道 Nick 家裡真的是超有錢。經過跟 Nick 家裡幾天的相處以後,Rachel 確認了自己並不受到歡迎,是的,Nick 的媽媽認為他們門不當戶不對。在一次對話裡,Nick 的媽媽說明了自己當初也是門不當戶不對地嫁進來,也非常努力的去學習跟適應,然後才慢慢爭取到家族的認同,可是,她並不認為 Rachel 可以,而且非常直白的告訴 Rachel,Rachel 大受打擊。
可是 Rachel 並不是一個柔弱的女子,她回頭找了好友,請好友幫忙打理全身裝扮,打算在 Nick 親戚的婚宴裡好好的證明自己。在婚宴裡,Rachel 展現出自己,證明自己跟 Nick 是郎才女貌的一對。Nick 的媽媽看到 Rachel 並沒有知難而退,就拿出之前請私家偵探調查 Rachel 家底的報告,原來媽媽隻身到美國,獨自撫養 Rachel 長大是有著不太光彩的原因的。這份報告等同於再次直白的告訴 Rachel ,你就是不配。Rachel 聽到自己母親是這樣的人,一個晴天霹靂,整個人恍恍惚惚的走出晚宴,回到好友那兒去,整個人失魂落魄了好幾天。
好友跟 Nick 輾轉找了 Rachel 的媽媽來到新加坡,Rachel 從母親口中得知了之前隻身來到美國的經過,這才明白前因後果。最後,她聯絡上 Nick 的母親,藉著放水一個牌局,明白的告訴 Nick 媽媽,今天老娘不是個不識大體的人,也不是我死纏爛打,今天是我犧牲來成全你,你之後不要忘了。說完,就跟母親走了。Nick 的媽媽回去以後,左思右想,她決定告訴 Nick ,讓他去追回 Rachel,然後就一個幸福的結局啦。

Holmes & Watson

電影不怎麼好笑,很多梗都時事梗、18禁梗,不適合小朋友看。故事大致是兩人搞笑的查案經過,最後歪打正著的找到凶手。

Contratiempo

8/11 周日晚上看了「佈局」,故事講的很棒,劇情區折離奇,後段算是反轉。到後面時,隱隱約約猜到那個律師就是死者的媽媽。
一開始是律師來找 Adrian ,Adrian 是個新創公司的年輕 CEO,看來像是陷入了困局。在簡短的相互介紹後,律師表示,你沒有告訴我詳細的經過,我沒辦法幫你,於是他開始娓娓道出事情的經過。Adrian 跟情人 Laura 一同出遊,為了閃避麋鹿,意外撞上了對向來的車子,兩人下車察看,發現對方已經死了。兩人相當緊張,經過一陣慌亂以後,Laura 說,乾脆我們佈置一下,讓人以為他是為了閃躲鹿而發生意外的吧,於是兩人開始忙了起來。事情總是不如人意,這時候來了輛車,Laura 機警的將死者推倒,偽裝成是車禍。車子駕駛善意的停下來詢問是否需要幫忙,Laura 聲稱已經找人幫忙就推託過去了。Laura 要 Adrian 開著死者的車帶死者去滅跡,自己則留在原地,設法將車開走。Adrian 開著車,開了很久,直到天黑。到了某個湖邊之後,將車子連死者一同推到湖裡去。Laura 在車子邊沒多久,很幸運的遇到了一個開著車的老人。這老人說自己是修車廠師傅,很會修這種車,就拖著車子回到老人家裡。老人幫 Laura 修車,Laura 就在老人家叨擾了好一會兒,閒聊時她突然看到照片,心裡嚇了一大跳,原來這死者就是這家人的兒子啊,但她外表假裝若無其事,趕緊開著修好的車子走了,然後就去接了 Adrian。在遇到 Adrian 時,她講了這件事情,串好供之後就回去了。後來,經過了若干日子,他們接到勒索信,說已經知道他們之前做的事情,除非給錢,要不然就揭露真相。他們跟對方約在旅館碰面,豈料在房間時,Adrian 被打昏之後,Laura 已經死在當場了,這也是 Adrian 為什麼會被控訴的原因。
律師反覆的針對疑點提出問題,Adrian 也開始針對前面所說的經過做出調整,最後 Adrian 終於透露出真相。原來一開始說的一切都是 Adrian 所編造的,棄屍是他提的,Laura 也是他殺的。Adrian 在這時接聽了一通電話,律師則把握這個機會離開了。咦?律師為什麼離開?原來律師並不是真的律師,他是 Virginia,是車禍死者的母親,他跟先生費盡心思,終於得知了所有真相,並且將 Adrian 的惡行揭露於世。

星期五, 9月 06, 2019

AWS S3/Glacier select

前幾天看 S3/Glacier FAQ 時,看到有 SELECT 這個功能,是去年推出的。S3/Glacier select  這功能是這樣子,你可以把 CSV/JSON/Apache Parquet 這幾種格式的檔案放到 S3/Glacier 上,然後就可以使用類似 SQL 的敘述來查詢檔案內容。
所以我們可以把不常使用的資料從資料庫移轉到 S3/Glacier 上,需要時,再使用 S3 SELECT 來查詢。這樣資料庫不需要一直擴充容量,放到 S3/Glacier 可以降低資料庫儲存的成本。
使用範例:
不過,網路上能找到的範例多半都是使用 CSV,那使用 JSON 又是如何呢?我試了以後,發現這個 JSON 格式不是我在 Python 用 json.dump() 傾印出來就搞定的。資料是陣列時,要針對每個元素去 dump,不可以是 [{}, {},…] 這樣,必須是 {} {} {} 這樣子,AWS API 才不會報錯 (參考:stackoverflow – amazon s3 – s3-select querying data on field name)。
import json

with open('output.json', 'wt') as fout:
  for obj in objs:
    json.dump(obj, fout, indent=2, ensure_ascii=True)
# 輸出結果
"""
{
  "id": 13930241}{
  "id": 13930240}
"""

星期三, 9月 04, 2019

vim – 查按鍵定義

雖說常用 vim,但是我幾乎是沒什麼在定義按鍵,都是沿用 plugin 的定義,所以用了一堆 plugin 之後,難免會遇到衝突的情況。
那麼要怎麼查按鍵的定義呢?除了可以用 grep/ag 來找 vimrc/plugin 裡的定義之外,也可以在執行 vim 以後,用 :verbose map 來查
" 我的 leader key 是 \
" 以下就是查 \gg 會執行的指令
:verbose map gg
步驟:
  1. 先按冒號 ‘:’ ,游標會移到下方,進入 last line mode
  2. 在下方輸入 verbose map gg
  3. 輸入完按 Enter,就會看到 vim 印出按鍵的定義與上次定義的位置
  4. 再按一次 Enter,就會關閉回到 Normal mode
印出的結果 (會因為你的按鍵定義而異)
n  \gg         * :EXGSearchCWordW
        上次設定: ~/exvim/vimfiles/bundle/ex-utility/autoload/ex/keymap.vim line 37

您或許對這些文章有興趣

Related Posts Plugin for WordPress, Blogger...