Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

作者: 日落

Ubuntu PPA for new version of Git

Posted on 2016 年 3 月 17 日2023 年 1 月 8 日 By 日落 在〈Ubuntu PPA for new version of Git〉中尚無留言

舊版本的 git 有安全性漏洞,需要升級到 2.7.1 以上版本
server and client side remote code execution through a buffer overflow in all git versions before 2.7.1 (unpublished ᴄᴠᴇ-2016-2324 and ᴄᴠᴇ‑2016‑2315)

Ubuntu 14.04 的 git 還在 1.x,只好靠 PPA 抓新版本:

sudo add-apt-repository ppa:git-core/ppa
sudo aptitude update && sudo aptitude upgrade
Tags:Git, Ubuntu

SSLv2 可能也不安全了

Posted on 2016 年 3 月 2 日2021 年 3 月 12 日 By 日落 在〈SSLv2 可能也不安全了〉中有 1 則留言

More than 11 million HTTPS websites imperiled by new decryption attack
http://arstechnica.com/security/2016/03/more-than-13-million-https-websites-imperiled-by-new-decryption-attack/

解釋:
最新的 SSL connection 攻擊:DROWN attack
https://blog.gslin.org/archives/2016/03/02/6381/

目前自己的機器好像沒受到影響,被份一下 nginx 的 HTTP 設定 (從多方搜尋來得設定值):

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;

若不清楚自己的 server 設定是否安全,可以透過 SSL Labs 提供的服務,來檢查是否有什麼潛在的問題。

Tags:資訊安全

準備離開 StartSSL

Posted on 2016 年 2 月 23 日2021 年 3 月 12 日 By 日落 在〈準備離開 StartSSL〉中有 2 則留言

Why I stopped using StartSSL (Hint: it involves a Chinese company)
https://pierrekim.github.io/blog/2016-02-16-why-i-stopped-using-startssl-because-of-qihoo-360.html

由於 cert 被扔到大陸機房去,所以還是換家 SSL provider 比較安全一點。

噗浪上有不少朋友提供 Let’s Encrypt 的解決方案,除了「root can only help」以外,好像沒什麼奇怪的地方。另外 JoeHorn 寫了一個全自動 renew 的 script,假日的時候來玩玩看 ~

Tags:資訊學習, 資訊安全

xargs -P 在 stdout 可能會遇到 race condition

Posted on 2016 年 2 月 4 日2021 年 3 月 12 日 By 日落 在〈xargs -P 在 stdout 可能會遇到 race condition〉中尚無留言

爬 log 發現 log 格式不正確,而且還是經常發生,而手動追蹤時又找不到錯誤在哪裡:

find . -name '*2016-01*.log.gz' | xargs -I'{}' -P 4 zgrep keyword {} | awk ...

做了測試以後才發現 xargs -P 時,各個 process 只要有 stdout 就會和其他 process 打架,造成資料還沒寫完就被其他 process 插單,導致最後出來的資料不正確。


先建立二個檔案,儲存不同的二個資料。

0.test.log (每行 50 字):

.................................................
.................................................
.................................................
....

1.test.log (每行 50 字):

1111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111
...

接下來使用 xargs 來 echo 這二個檔案內容:

find . -name '*test.log' | xargs -I'{}' -P 2 cat {} > output.xargs.log

接下來寫個 script 來檢查 output.xargs.log 的內容是否都正確:

for LINE in `cat output.xargs.log `; do
    if [ 50 -lt ${#LINE} ]; then
        echo $LINE
    fi
done

結果會發現 output 有一行超過 50 個自得情況發生:

111111111111111111111111111111111111.................................................

而相同的情況下,parallel 就不會有相同的情況發生:

find . -name '*test.log' | parallel -j 2 cat {} > output.xargs.log

原因是 parallel 會將 jobs (process) 的 output 先 buffer 起來,等到整個 job 都結束以後在一起送到 stdout。若使用上述的範例改用 parallel 的操作來測試的話,可以發現不同 job 的 output 有被完全區隔開來,沒有混在一起:

...
.................................................
.................................................
.................................................
1111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111
...

總之,以後用到 xargs -P 時,要小心 race condition … (暈)

Tags:Bash, Linux

特定情況下 PHP 可以比 awk 還要快

Posted on 2015 年 11 月 10 日2021 年 3 月 12 日 By 日落 在〈特定情況下 PHP 可以比 awk 還要快〉中尚無留言

因為工作上的需要,會需要將 HTTP log 抓出來做統計,所以會遇到類似下方的 RESTful path:

GET /user/123/bio HTTP/1.1 ...
GET /user/456/bio HTTP/1.1 ...

如果取完整的 path 則無法辨別後端到底是使用哪一個 API,所以使用 awk 的 regex 辨識後 mapping 到 API 名稱上。寫完以後的 awk script 大約有 300 行左右,一份 log 大概要花 2 分鐘左右。

後來經高人指點,PHP 的 native library 好歹也是 C++ 寫的,理論上不會太慢,於是用 PHP 的 preg_match() 將相同的邏輯寫了一次。同一份 log 使用 PHP 來 parse 大約只需要 1 分 32秒。

另外 PHP 預設會載入已安裝的 extensions (mysql, mcrypt …),既然只用到 native library 的話,其實這些也可以去掉不要用。改為「php -n」不載入任何 extension 再執行時,速度又快了一些,只要約 1 分鐘。

PHP 其實還有一些可以繼續調整的東西,像是把資料放在陣列裡面做搜尋時,如果把資料存成 array index 並使用 array_key_exists() 方式去判斷,會比 in_array() 還要更快 [Ref]。

Tags:Bash, PHP

文章分頁

上一頁 1 ... 106 107 108 ... 318 下一頁

其他

關於我  (About me)

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.