[爆卦]git安裝mac是什麼?優點缺點精華區懶人包

雖然這篇git安裝mac鄉民發文沒有被收入到精華區:在git安裝mac這個話題中,我們另外找到其它相關的精選爆讚文章

在 git安裝mac產品中有3篇Facebook貼文,粉絲數超過2,850的網紅矽谷牛的耕田筆記,也在其Facebook貼文中提到, 本篇文章探討的也是資安系列問題,而這次的目標主角則是 MAC 系統上廣為流傳的 Homebrew 系統。 結論: 作者透過觀察 Homebrew 的 Github Action 流程,成功得上傳一個會列印一行的程式碼到 iterm2 套件中,讓所有安裝的使用者都會於 Terminal 上看到一行作...

  • git安裝mac 在 矽谷牛的耕田筆記 Facebook 的最佳貼文

    2021-05-05 08:00:07
    有 53 人按讚

    本篇文章探討的也是資安系列問題,而這次的目標主角則是 MAC 系統上廣為流傳的 Homebrew 系統。

    結論:
    作者透過觀察 Homebrew 的 Github Action 流程,成功得上傳一個會列印一行的程式碼到 iterm2 套件中,讓所有安裝的使用者都會於 Terminal 上看到一行作者客製化的訊息。

    本次的漏洞是作者刻意從 Homebrew 的 Vulnerability Disclosure Program 專案中去嘗試尋找可能的問題,所有的操作都有跟官方專案的人探討過流程,並且一切的 PoC 都是單純證明該攻擊的可行性,所以有興趣研究的人請遵循一樣的想法去做,不要認真的想攻擊。

    原因:
    1. Homebrew 透過 Github Action 執行 CI/CD 動作
    2. Homebrew 撰寫了一個自動合併 Pull Request 的 Action
    3. CI 內會透過一個Ruby的 Git Diff 第三方函式庫來驗證,只要符合下列條件就可以自動合併
    - Modifying only 1 file
    - Not moving/creating/deleting file
    - Target filepath matches \ACasks/[^/]+\.rb\Z
    - Line count of deletions/additions are same
    - All deletions/additions matches /\A[+-]\s*version "([^"]+)"\Z/ or - -\A[+-]\s*sha256 "[0-9a-f]{64}"\Z
    - No changes to format of versions (e.g. 1.2.3 => 2.3.4)

    作者一開始想要從該規則下手,找尋有沒有可能塞入惡意攻擊並且騙過系統讓其自動合併,然而這些規則看起來沒有什麼太多問題,於是作者轉往其他領域去找尋問題,其中一個想法就是到底該 Ruby 的 Git Diff 是如何實作,也許從實作下手更有辦法去欺騙這一切。

    很順利的是,作者真的於該函式庫中找到問題,對於一個 Git Diff 的結果來說,該函式庫會透過 +++ "?b/(.*) 這樣的正規表達式來判別檔案路徑的資訊而並非程式修改內容,譬如下列 diff
    ```
    diff --git a/source file path b/destination file path
    index parent commit hash..current commit hash filemode
    --- a/source file path
    +++ b/destination file path
    @@ line information @@
    Details of changes (e.g.: `+asdf`,`-zxcv`)
    ```

    作者就開始思考,如果讓程式碼可以符合 +++ "?b/(.*) 的規則,是否有辦法讓程式碼不被視為一個檔案的修改,因此就可以修改多行程式碼但是讓 CI 系統認為只有一行程式碼於是進行自動合併

    作者最初的想法如下,第一行用來放惡意程式碼,第二行用來偽裝檔案路徑,經過一番嘗試後作者真的成功塞入了類似 PRINTF 的程式碼到環境中並觸發自動合併。接者各地使用者透過 brew 安裝 iterm 版本都會看到使用者塞入的程式碼。
    ```
    ++ "b/#{Arbitrary codes here}"
    ++ b/Casks/cask.rb
    ```

    原文還有更多作者的思路過程,有興趣的不要錯過

    原文:
    https://blog.ryotak.me/post/homebrew-security-incident-en/#fn:7
    測試用PR:
    https://github.com/Homebrew/homebrew-cask/pull/104191

  • git安裝mac 在 91 敏捷開發之路 Facebook 的最讚貼文

    2016-10-19 21:15:22
    有 17 人按讚


    這年頭越來越講究實戰了,不要錯過!

    PHPConf 下午的 Workshop,目前開始搶票,為了維持教學品質,我們提供了 4 個助教,每場僅有 30 個名額。

    我在 PHPConf 下午的第一場 Workshop 會帶大家實際跑一次自動化測試,內容有

    1. PHPUnit, Selenium, ChromeDriver 實際安裝
    2. 實際動手寫 Laravel 的應用程式測試
    3. 實際動手寫 PHPUnit + Selenium 自動化測試
    4. 實際動手寫改良化的 Selenium 測試

    請先準備好以下環境
    1. PHP 7 (範例使用 PHP 7 語法,5.6 會無法執行)
    2. Composer
    3. Git
    4. PhpStorm (https://www.jetbrains.com/phpstorm/) 試用版即可

    不用擔心不會使用 PhpStorm,我會從基本教大家如何使用 PhpStorm,一步一步設定 PhpStorm 的自動化測試環境,只要課前先裝好 PhpStorm 即可。

    報名網址 : http://phpconf.kktix.cc/events/2016-workshop-1

    第二場由 陳正瑋 (Cheng Wei Chen)​教大家自動化持續整合

    1. Docker 與 Gitlab 實際安裝
    2. 將第一堂課所寫的程式與測試,拿到 Gitlab 內自動化測試與部署

    請先準備好以下環境
    1. VirtualBox 5.1

    報名網址 : http://phpconf.kktix.cc/events/2016-workshop-2

    基本上兩個 Workshop 使用 Mac、Windows、Linux 皆可,我們會使用 Mac 示範。

  • git安裝mac 在 紀老師程式教學網 Facebook 的最佳貼文

    2015-06-30 08:45:02
    有 181 人按讚

    想在 30 分鐘內學會 Git 嗎?看這裡就對了!

    Git 是一種「原始碼版本控制」軟體,它可以儲存原始碼每個版本之間的差異,然後您可以要求「時光回溯」到任何指定的版本。這可以防止一天到晚改規格的客戶或老闆,在您辛苦更動原始碼後,來一句要命的:「還是之前的那一版比較好」。我個人認為,它是程式設計中,最重要的 7 大軟體之一(文字編輯器、編譯器、版本控制器、自動化建構系統、單元測試軟體、環境佈建系統、與除錯器)。

    這類「版本控制軟體」,依照流行先後,著名的有 CVS、Subversion、與 Git。目前最流行的版本控制軟體是「Git」,流行原因多多少少是因為 Linux 核心(Linux Kernel)原始碼,就是用這套軟體保持各個版本差異的。不少公司也要求程式設計師寫好原始碼後,一律都得回存 Git 系統才算完工,不能只是存在私人的硬碟就了事。所以 Git 就變成業界必備的軟體之一。

    補習班常常有同學問我,有沒有那種很簡單的 Git 說明書,不用講太深,但要在 30 ~ 60 分鐘內就掌握常用功能的教材?之前一直找不到,不過今天幫大家找到了!還有中文版喔!叫做「Git 簡明指南」。鏈結如下:

    https://rogerdudler.github.io/git-guide/index.zh.html

    其實它的原文名稱有點好玩:「Git - The Simple Guide, No Deep Shit!」。這類標題通常能騷動我個性中愛作怪的小惡魔,讓我會心一笑後點進去看看。看完後,果然「一點點深的便便」都沒有... XD 還有中文版(簡中)!心想這麼讚的東西不介紹怎麼行!就花時間寫了這一篇。

    希望今天的分享對各位的日常工作有幫助!我也很鼓勵大家能找到適合自己的「七大系統」,把它弄熟。畢竟「工欲善其事,必先利其器」嘛!我個人習慣使用的七大系統,也列在底下讓大家參考:

    1. 文字編輯器:vim。不好學,但游標移動速度與文字操控能力超快!
    2. 編譯器:gcc。因為我寫 C 語言比較多,所以用 gcc。
    3. 版本控制器:git。其實我之前是熟 subversion。不過 git 也很好用喔!
    4. 自動化建構系統:make。可以把編譯、安裝...等囉哩八唆的指令濃縮成一個簡稱(如:build, install...等)。打完按下 enter 後就可以去泡咖啡了!還能偵測哪些原始碼已經編譯過,不需重新編譯已縮短作業時間。
    5. 單元測試軟體:CUnit。嚴格來說,這算一套「函式庫」,可以針對你寫好的原始碼做測試。由於我寫 C 較多,所以用 CUnit。如果您寫的程式碼是 Java 或其它,可能得找相對應的測試軟體。
    6. 環境佈建軟體:VirtualBox。用它的原因是 Win, Mac, Linux 全平台都支援。我會把程式設計環境灌好後的 VirtualBox 映像檔保存好,每次要乾淨環境就 new 一個新的虛擬機起來。最近迷上 Vagrant,想知道 Vagrant 是什麼的可以看這篇: http://goo.gl/29mBs9
    7. 除錯器:gdb。雖然是文字介面,但連線到運算能力很差的開發板上想除錯,也只有 gdb 跑得動。用久了也習慣了。

    其實最近還想加上第八項「(8) 軟體部署系統:Docker」,不過還在研究,也還沒熟悉。等熟悉了再跟大家報告。 :-)

    如果覺得文章不錯,還煩請各位不吝按讚打賞或分享一下喔! m(^ ^)m

你可能也想看看

搜尋相關網站