2010-10-20 49 views
1

我有一個使用SQL 2005 Express的c#winform應用程序。該應用程序創建數學和閱讀測驗,並向學齡兒童的父母推銷。家長從我的網站購買並下載包含測驗的SQL文件,並將它們安裝在應用程序中(安裝在他們孩子的計算機上)。如何保護我winform的SQL 2005 Express數據庫中的數據?

我有兩個SQL安全問題:

(1)有些孩子可能不希望測驗出現在他們的計算機上,因此他們可能會嘗試(一)刪除SQL數據庫或(b)禁用應用程序通過更改數據庫中的值。

在我看來,任何擁有SQL Server Management Studio Express的人都可以輕鬆更改數據庫的內容。

因此,可以做些什麼來防止這種情況(除了向父母推薦他們不讓子女使用管理員帳戶)呢? (2)我唯一的收入是銷售測驗,所以我想保護這些數據不被複制和共享。 (a)這些文件需要從我的服務器上下載到孩子的電腦上,然後安裝(b),然後一旦安裝完畢,他們就只能住在孩子的電腦上。

在我看來,任何擁有SQL數據庫發佈嚮導的人都可以輕鬆地複製數據庫的內容。

是否有可能只允許我的應用程序訪問SQL數據庫?是否有可能限制其他人訪問它(即使使用Windows管理員帳戶的人)?

當前,我的應用程序的安裝腳本爲我的應用程序創建了一個SQL 2005 Express服務器的新實例,它使用Windows身份驗證。

我已經閱讀了Stackoverflow和其他地方的幾個SQL安全職位,但我還沒有弄清楚這一點。

回答

1

從一個不起眼的黑客角度來看,父母都被搞砸了。這是因爲他們的孩子可以通過物理方式訪問計算機。從理論上講,他們可以以任何方式攻擊它。

現在,讓我們一起去更可能的。

您發現不給孩子管理員訪問會產生很大的影響。但是如果你說這是大多數家庭無法接觸的,SQL Management Studio也是如此。你可以打賭,孩子們不會去得到這個並安裝它。

然而,最後,你可能會更好的與一些老式的混淆。除了使用像SQL Management Studio之類的工具外,其中有免費提供的工具來修改和防止這些測驗出現或者其他任何可用的攻擊,您可以創建自己的文件格式,並希望大多數孩子在看到二進制文件時會放棄gobbledy性國。

如果他們要放棄這一點,很多人可能會放棄SQL Express。也就是說,孩子們非常機智,有些人可能願意按照他們在Google上搜索的一步一步的指示來擊敗你的軟件。

這聽起來像是您將這些測驗部署到不受您控制的計算機上的SQL Express實例。They aren't your machines anymore.

我不想說「你不能做你在問什麼」,但你在問如何防止某人使用管理員工具來打敗你的軟件。我想我的答案是「你不能」。你必須重新檢查你的設計,或者只是想着大多數孩子不會走得太遠。

+0

感謝Chris,你和JohnFly的觀點相同,這就是說,一旦部署數據庫後,我無法真正保護數據庫。 – Frederick 2010-10-21 20:30:24

0

您可以在測驗數據上使用加密。

Encrypt and decrypt a string

在這樣做的缺點是你的應用程序必須在其代碼中的加密/解密密鑰,所以有人仍然可以通過重新編譯工具或類似的東西反射器訪問它。

真正的答案是保護你的應用程序的一切幾乎是不可能的。想想大公司和他們的保護技術,微軟,Adobe等......他們都有盜版問題。另外,如果你的應用程序足以讓很多人盜用,你很可能會有很多合法的銷售。

在此之前,我不會擔心它太多,只是採取一些不會過多幹擾工作流程的小預防措施。

+0

是的,我懷疑你是正確的,因爲它是不可能保護你的應用程序的一切。我將在我的一些數據列上使用加密,並暫時將其保留。感謝您的建議。 – Frederick 2010-10-21 20:25:26

相關問題