Skip to content

Zeroplex 生活隨筆

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

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

標籤: PHP

master.php.net 的使用者資料庫可能已經外洩

Posted on 2021 年 4 月 9 日2021 年 4 月 9 日 By 日落 在〈master.php.net 的使用者資料庫可能已經外洩〉中尚無留言

看到 Hacker News 的新聞「PHP Site’s User Database Was Hacked In Recent Source Code Backdoor Attack」:

While this was initially treated as a compromise of the git.php.net server, further investigation into the incident has revealed that the commits were a result of pushing them using HTTPS and password-based authentication, leading them to suspect a possible leak of the master.php.net user database.

從伺服器的記錄猜測,攻擊者是透過 HTTP authentication 的方式,在 git repository 偷偷藏入 backdoor。若猜測是正確的,表示攻擊者可能已經取得 master.php.net 的使用者資料庫。另外也提到網站運作的環境太老舊,攻擊者也可能已經找到軟體上的弱點並透過這些弱點來設計攻擊。

官方已將網站改用 TLS 1.2,並將密碼儲存方式從 MD5 更新為 bcrypt 雜湊。比較好奇如果沒有保留密碼,要怎麼從 MD5 更新為 bcrypt?Hash 二次嗎? XD

Tags:PHP, 新聞, 資訊安全

偵測 WordPress 目前使用的佈景主題 (theme)

Posted on 2021 年 4 月 2 日2021 年 3 月 31 日 By 日落 在〈偵測 WordPress 目前使用的佈景主題 (theme)〉中尚無留言

若需要偵測 WordPress 目前使用的佈景主題 (theme),可以使用 wp_get_theme() 這個函式:

<?php

$theme = wp_get_theme();

回傳值是一個 WP_Theme 物件,可以參考 reference 來做進階判斷。

若要尋找目前以下載的佈景主題資訊,也可以使用 wp_get_theme():

<?php

wp_get_theme('twentytwenty');

if (!is_object($theme)) {
    return 'error';
}

echo $theme->get('ThemeURI');
Tags:PHP, WordPress

啟用 WordPress 的除錯模式

Posted on 2021 年 3 月 29 日2021 年 3 月 29 日 By 日落 在〈啟用 WordPress 的除錯模式〉中尚無留言

WordPress 預設不會顯示任何的錯誤訊息,若要開發 theme、plugin 來說實在不方便。但可以在 wp-config.php 中新增參數供開發人員使用。

<?php

// ....

// allow debug
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'SCRIPT_DEBUG', true );
define( 'SAVEQUERIES', true );
define( 'WP_DEBUG_DISPLAY', true);

再多一些除錯訊息:

<?php

// ....

ini_set( 'display_errors', 1 );
error_reporting(E_ALL);
Tags:PHP, WordPress

WordPress 工具箱

Posted on 2021 年 3 月 26 日2021 年 3 月 26 日 By 日落 在〈WordPress 工具箱〉中尚無留言

搬到 WordPress 也過了幾週,這裡整理一下我搬家、整理資料用到的 WordPress 外掛。這邊會提到的外掛包含搬移資料、快取、圖片 CDN、程式碼標記、RSS 等工具,但因我沒特別做 SEO (只要自己搜尋找得到資料就好),所以不會提及 SEO 相關外掛和工具。

Blogger Importer Extended

這是我找到一個很好用的搬家工具,從 Blogger 轉資料、圖片到 WordPress,中間完全不需要進行設定會人工介入,工具跑完文章和圖片都已經好端端匯入 WordPress,留言、分類、標籤也一併拉回來。

我可能較心急,不然似乎還可以提供 Blogger 做 301 redirect,讓流量直接導至新網站。

Blogger Importer Extended 是付費工具,但可以一次就完整把所有資料複製回 WordPress,個人覺得這個價格比外包找人整合資料庫便宜多了,非常值得購買。

Enlighter – Customizable Syntax Highlighter

就是個 Syntax Higlighter,但不只支援多種程式語言的 highlight,也同時支援 inline highlight、新版 WordPress 的 block editor。輕輕鬆鬆就可以達到需要的效果:

More “WordPress 工具箱” »

Tags:PHP, WordPress

PHP 在 background 處理資料的另一種方法

Posted on 2021 年 3 月 24 日2021 年 3 月 24 日 By 日落 在〈PHP 在 background 處理資料的另一種方法〉中尚無留言

一般用 PHP 實作 background task,大多都是先將 task 處理後再處理 user request。
所以程式大概是長這樣:

<?php

class Contrller
{
    public function handle()
    {
        if (Background::hasTask()) {
            Background::run();
        }

        $data = List::whereIn('id', [1, 4, 6])->get();
        view($data);
}

這樣做會有一些缺點,若背景程式跑了很久才結束,會讓使用者有一種「點了按鍵卻感覺沒有回應」的錯覺。

若有時候真的累積不少 background task 需要處理時,為了不讓使用者等太久,通常會 trigger 一些專為 background task 設定的程式去執行,像是一群的 consumer,或者會 trigger gearman 去處理。

而我再某一次很罕見的狀況下必須馬上讓使用者先收到 reponse 之後才去處理 background task。問題來了:通常都要 PHP return / exit 以後,response 才會傳回 client,那有什麼辦法先給已經處理好的 response,讓 client 繼續瀏覽以後再來跑 background task?

沒想到還真的讓我找到解法:fastcgi_finish_request()。

fastcgi_finish_request()這個函式會先通知 fastcgi 的上層 (我這邊是 Nginx reverse proxy) 要給 client 的資料都送出去囉,可以 ending 啦。然後 PHP 偷偷摸摸繼續在後面弄東西。
程式上寫起來會有點不一樣:

<?php

class Contrller
{
    public function handle()
    {
        $data = List::whereIn('id', [1, 4, 6])->get();
        view($data);
        fastcgi_finish_request();  // 這之後不管發生什麼事,client 都不會再收到訊息

        Background::run()
}

不過要注意,因為不管如何,client 都不再收到訊息,因此若有錯誤發生是很難 debug 的。
用 catch 也好,用 logger 也好,甚至你要請到 register_shutdown_function() 出場也都好,如果不這樣做,基本上沒什麼 debug 手段。

而我使用 fastcgi_finish_request() 也只有在 Nginx + php-fpm 時成功,我不曉得會做其他形式的 web server 架構是否可以使用。如果網友嘗試過,不如回覆讓其他人知道一下。

總之不得已才使用這個方法。

Tags:hack, Nginx, PHP

文章分頁

上一頁 1 ... 7 8 9 ... 26 下一頁

其他

關於我  (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 國際 授權條款授權.