前陣子,花時間慢慢把中國廠商和中資廠商記錄下來,若比較敏感的產品,可以避開這些公司。
後來發現,這件事情早就有人在做了,整理成資料庫「笨他侵略」,而且還比我敏感很多,連和辦活動有合作關係的公司都被記錄戲來。
軟體開發、伺服器和生活瑣事
前陣子,花時間慢慢把中國廠商和中資廠商記錄下來,若比較敏感的產品,可以避開這些公司。
後來發現,這件事情早就有人在做了,整理成資料庫「笨他侵略」,而且還比我敏感很多,連和辦活動有合作關係的公司都被記錄戲來。
隨著電腦速度越來越快,密碼的長度以及複雜度就變得更重要。
最近正在設計新的密碼來取代原有強度不夠的密碼,以下是設計密碼時我會考量到的因素,給大家參考。
密碼之所以被稱作「密」碼,意思就是只有你一個人知道,其他人不應該透過任何方式,例如紙條、你的個人資料、平日對話關鍵字等方式,來得到、猜到你的密碼。
簡而言之,密碼必須記在腦裡,不應該出現在其他地方。如果密碼無法記在腦中,而必須寫在紙上,或是儲存在其他地方,這個密碼就不能算是一個安全的密碼。
長度當然越長越好,因為密碼長度越長,表示要破解時猜測要花的時間也會越長。但若長度過長而導致密碼記不起來、必須透過其他方法記憶時,與前一項「容易記憶」就衝突了。
個人建議密碼盡可能超過 12 個字,而長度到多長依照個人能力而定。再透過「複雜度」讓密碼更不容易被猜到。
可以用來當密碼的文字,可以除了數字以外,還有應無大小寫 (大寫和小寫是不同的),另外可以再加上特殊符號,如 @
、&
、!
等等,密碼中包含越多不同類型的文字,安全性越高。
目前大多數的系統僅支援基本英文文字與符號,因此使用中文文字或是全形符號、emoji (🤘) 來當作密碼,可能會遇到一些問題、導致部份系統發生錯誤。
到這邊應該會有人有疑問,長度要夠長、又需要包含數字、英文大小寫,還要加上特殊符號,這連寫下來都有困難,怎麼可能記得住?事實上,有一些方法可以幫助密碼記憶 (可以參考中文輸入法拆字根的方法):
H
,可以拆成二個英文小寫 l
與一個符號 -
,變成 l-l
x
可以拆成 ><
丼
可以用符號 #
來替代0
、o
、O
,或是拆成符號表示 []
/__\==b
@
有英文 at
(或中文 在
) 的意思,所以可以「我在睡」可以用 me@ZZzz..
表示.
、疑問句用 ?
,有和沒有可以透過 +
或 -
來表示!@#$%^&*
來代表髒話,你可以建立只有自己在使用的特殊格式BG
、「科科」改為 kerker
how
、Kooool
da
和 %
dkdk
*
(有個空白沒錯)以上應該可以讓大家多出很多增加密碼長度又不會增加記憶難度的方法。
現在有一些密碼管理工具,像是 1Password、bitwarden、KeePass,你只需要記憶一個主要密碼用來開啟密碼管理工具,而其他網站、服務的密碼,都是由管理工具隨機產生,不需要你記憶。
這樣有一個好處,你只要花時間設計並記住一個夠安全的密碼,來開啟密碼管理工具,網站、服務登入時,只要從管理工具複製帳號、密碼再貼上就好。這樣每個網站都會有完全不同的密碼,即使其中一個網站的密碼被盜用,其他網站仍然是安全的。
但這個方式也有一個缺點,就是把雞蛋放在同一個籃子,LastPass 在 2022 年被駭客入侵成功,甚至有傳言使用者密碼資料庫也被竊。
密碼管理工具並不表示絕對的安全,使用時記得搭配 2FA 工具來多加一層保護。
另外我想提一些比較沒有人在討論的問題。
前段有提到可以使用鍵盤的對應位置來協助建立密碼,但在寫這篇文章的當下,鍵盤可能已經不是主流的輸入工具了,可能是觸控螢幕。而使用觸控螢幕時,輸入法 app 的排版、操作方法則會是影響密碼輸入最大的因素。
以上二張圖,可以看出不同的輸入法有不同的排版,英文按鍵的位置上大多是類似的,但遇到要輸入符號,則不同輸入法可能都有不同的版面,若輸入法沒有特別為符號輸入設計,輸入包含符號的密碼會變得很麻煩,甚至常常出錯。
若如果經常使用行動裝置,可以將符號縮限在 @
、#
、$
或 $
等一些比較常用的符號,這些符號在大多數螢幕輸入法上比較容易找到。
一些使用者平常沒注意到的地方,以及新的技術發明,導致密碼輸入時可能更容易被辨別或猜測:
密碼並不是唯一可以用來辨識身份的方法,一些新的技術,可以讓你使用其他方法來做驗證:
參考資料:
標題不知道寫什麼好,反正外掛說 SEO 100 分 …..
在開始聊 Meilisearch 之前,我想先來聊一下全文檢索。
MySQL 搜尋功能都是精確搜尋,也就是搜尋的關鍵字一定會出現。例如:
SELECT title FROM news WHERE news_content like '%逢甲夜市%'
以上的語法,搜尋結果中一定會包含「逢甲夜市」四個字。
但若我需要模糊搜尋,搜尋「逢甲」或是「夜市」,該怎麼辦?
這個時候要改用 MySQL 的全文檢索功能。
需要被全文檢索的欄位,必須先建立 fulltext 的索引:
create index full_text_idx_news on news (news_content) using full_text
搜尋時就可以使用全文檢索語法:
SELECT title FROM meilisearch_index_urls WHERE match(news_content) AGAINST ("逢甲夜市")
這時「逢甲夜市」、「逢甲」、「夜市」應該都有機會被列出來,但是準確度並不高。
以英語系的語言,要將詞彙區分出來較為容易,因為每個詞中間都有空白:
This is night market
很明顯可以分成四個詞:
中文就沒有這麼方便了,以「這是夜市」來說,這句話中一個空白都沒有,只能依照字詞長度做分割:
將所有排列組合全部列出以後,再用其他文章出現的字詞,將常用詞會出現的機率 (詞頻) 將機率大的列出。
這裡介紹中研院花了數年開發出來的中文斷詞系統 (CKIP),他不但能將詞彙列出,甚至還可以便辭性與外來語:
要成精準的分中文字詞,需要先有一個語料庫,才能較準確的搜尋與分析。而這次要介紹的 Meilisearch,就有支援不同語言的分析,所以在全文件檢索上的精確度高上許多。
Meilisearch 是一個使用 Rust 開發的全文檢索引擎,有以下特點:
先開啟 Meilisearch Github 官方網站中的 release 頁面,先抓穩定板 (這裡以 v1.10.3 為主),在下方「assets」選擇適合你的 binary 檔下載。
剛下載的 binary 沒有執行權限,使用 chmod 給他執行全賢執行權限:
chmod +x meilisearch-linux-amd64
安裝到這裡,就算是結束了。
預設的啟動方式,就是直接行 Meilisearch:
啟動後除了可以看到他們 logo 以外,往下一些還可以看到他建立了一個目錄 ./data.ms
作為資料除存使用,這邊主要儲存索引黨。
Meilisearch 使用 RESTful API,所以參考官方文件,透過 curl 便可確定是否已經能正常運作:
這邊使用 GET /indexes
來要求 Meilisearch 列出所有的 indexes,剛安裝好的當然沒什麼東西,所以 results
是空的沒錯。
Meilisearch 的資料為 document
,不是資料表,所以資料只要標明欄位名稱、內容,級可以被建立索引,且前後的 document 其使欄位不同也可以被接受。
這裡準備一個範例 document:
[ { "id": 1, "name": "日升", "phone": "0987654321", "tag": ["programming", "photograing", "readding"] }, { "id": 2, "name": "日落", "tag": ["programming", "PHP", "back-end", "docker"] } ]
然後按照 Meilisearch add documents 的說明新增資料:
這邊 Meilisearch 並不會告訴你是否成功,因為所有的動作都會先進度工作佇列,再慢慢處理。
執行後拿到的 tasekUid
是「0」,我們可以再使用這個 ID 去查詢執行狀態:
curl -X GET 'http:///localhost:7700/tasks/0'
task 這邊回有很詳細的狀態,像是成功或失敗,開始時間、結束時間等等。
操作沒有很複雜,看一下 Meiliserch 官方文件差不多都可以解決。
我這邊建立索引的新聞內容,目前放在自家網站 Zeroplex
的新聞搜尋工具,大家可以拿一些奇怪的中文字去搜尋看,Meilisearch 全文檢索功能在中文處理上效果不錯
上述新聞搜尋工具,目前為以下項目做全文檢索:
搜尋會回傳的內容有:
目前使用狀況大致如下:
document
數量約 140 萬筆目前使用的狀況:
以下是我在 KaLUG 分享時使用的簡報,歡迎大家參考:
覺得公視新聞實驗室這集整理的蠻清楚的。
影響人判斷真假訊息有幾個要素:
現在不少文章、影片為了流量 (?) 內容都刻意做的比較偏激,容易造成判斷錯誤,要多注意不要被情緒影響。
ps. 影片前 30 秒很讚 XD
記錄各家優酪乳的乳酸菌類型。
義美優酪乳:
統一 AB 優酪乳:
統一 LP33 機能優酪乳
福樂 自然零
光全
林鳳營益生菌優酪乳