【茶包射手日記】SQLite 資料庫出錯消失

最近啟動了部落格轉移計劃,打算把我的部落格從 ASP.NET + SQL 移到 ASP.NET Core + SQLite。前陣子試出 Ubuntu + SQLite + Dapper 令我信心大增,後續進展也挺順利,寫了匯入程式,從 SQL 匯出物件轉 JSON,開始將 JSON 資料轉換成新平台 Model,再用 Entity Framework 寫入 SQLite 資料庫。

不料,批次匯入時發現每次一轉到某篇文章時固定出錯,最可怕的是,出錯後整個資料庫檔案會消失無蹤。

頓如五雷轟頂!喵的,這還得了,一出錯整個 SQLite 資料庫檔案消失,網站全部內容化為烏有,如果這是 SQLite .NET Core 的 Bug,誰敢用?原本寄以厚望的架構這下要作廢了,心中猶如萬頭羚羊狂奔…

冷靜了一下,想想不對。SQLite 也算當今迷你資料庫主流,應用廣泛,不應存在如此嚴重 Bug,即使有也很快會被抓到並修復。

於是再反覆測試,發現一絲曙光。

SQLite 出錯的當下,桌面右下角剛好彈出 Windows Defender 警示:

啊!是防毒軟體搞鬼,SQLite 資料庫被誤判含有病毒,檔案消失原因是被防毒軟體隔離!由 Windows Defender 掃瞄記錄證實這點,blog.db 被判定包含 JS/ShellCode.gen 病毒遭到移除。

案情急轉之下,SQLite 無罪,仍是值得信任的好夥伴,我大大鬆了一口氣,接下來便是找出到底是哪篇文章造成誤判,避開即可。

有趣的是,批次匯入作業出錯都是在試圖寫入 Distributed Transaction With MS OLEDB Provider For Oracle 時,所以是這篇文章觸發防毒警報導致資料庫被刪,但這篇跟病毒有個毛關係?不得已,我使用愚公移山法反覆測試不同組合,最後找出問題跟另一篇包含木馬程式的 有趣的木馬解剖 文章有關。資料庫檔同時存在這兩篇文章會觸發 Windows Defender 誤判,單獨寫入其中任何一篇沒問題,只要別同時存在就沒事。

有趣的木馬解剖 由於內含解說用的木馬程式範例,過去已有多次被防毒軟體誤抓坐黑牢的記錄(木馬解剖一點都不有趣呀),為此也改過 CLSID,調過程式碼樣本,但跟另一篇文章組合而被誤判倒是頭一遭。

一怒之下,將程式碼部分都換成圖檔,徹底解決誤判風險,事件落幕。

歡迎推文分享:
Published 26 August 2018 11:36 AM 由 Jeffrey
Filed under:
Views: 3,726



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<August 2018>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication