2013-12-07 98 views
0

我已經構建了一個應用程序,該應用程序利用Amazon託管的數據庫。我試圖找到一種安全連接的方式,並且總體而言,我確信我不知道自己在做什麼。使用C#安全地連接到AWS MySQL數據庫

我的原意是存儲在我和加密的應用程序我的數據庫憑據,但我一直認爲,導致使用Web服務將作爲本地存儲,可以真正確保沒有一個更好的選擇。但是,我不知道如何爲此使用Web服務,或者爲什麼它會有所作爲。

在使用Web服務,我會來建立一個Windows Server和部署這種「Web服務」,以它來連接,這將然後連接到我的數據庫?這幾乎看起來是多餘的,儘管我仍然認爲自己是一個業餘愛好者。即使如此,我將如何安全地進行身份驗證?

結束比賽對我來說是能夠存儲DB(和PayPal賣家憑證)的地方,用戶不能在任何情況下訪問,但我的程序即可。它似乎比這裏和其他地方的人們看起來更加切斷和乾燥,但我又是一個新手。

任何方向將不勝感激!我想在我們的組織外部進行測試等。

謝謝,夥計們!

回答

0

如果你的數據庫是MySQL的,那麼你可以使用:Connector/Net從MySQL。數據庫的憑證通常保存在應用程序的web.config中。我也沒有看到在你的情況下使用網絡服務的理由。當您需要將數據從一個系統傳輸到另一個系統時,使用Web服務,而不是爲數據庫連接提供更好的安全性。

編輯: 正如邁克爾·好心地解釋這種方法是針對其服務器上託管的Web應用程序。至於客戶端應用程序,將數據庫憑證保存在應用程序中(加密或不加密)是非常糟糕的主意。在這種情況下,應開發額外的Web應用程序,它將提供使用Web服務(通過https)驗證用戶的方式,並將數據從數據庫傳輸給用戶。

+0

如果我將它添加到我的app.config中,在運行時是不是可見的?我的印象是,如果我對它進行了加密,它在部署時仍然可見,直到它被加密(通常是在啓動時)。 –

+1

@JackM我認爲這個答案指的是你的「應用程序」,這是對應用程序服務器的引用 - 即提供「Web服務」的東西 - 而不是「應用程序」。我認爲這裏的意思是,你不需要額外的Web服務來從你的(假設的)現有的服務器連接到數據庫,儘管我可能弄錯了。 –

+0

出於某種原因,我一直在考慮部署在服務器上的Web應用程序,而不是客戶端應用程序。在客戶端應用程序的情況下,您還應該開發Web應用程序,它將驗證用戶並提供Web服務(通過https)。我會更新我的答案。 –

1

對我來說,給你的「應用程序」 - 我認爲這意味着一個「應用程序」部署在人們的設備上,或者某種桌面應用程序 - 直接連接到你的數據庫是不可想象的,除非想到把在紙質信封中將車鑰匙固定在車窗上似乎很安全。

應用程序應該有一個非常小的一些非常具體的事情可以做數據庫,並應離開從那裏的正是它,並和由他人代其蹤跡。該應用可以通過https向您的應用服務器上運行的服務(例如REST API)發出請求 - 「Web服務」,然後您的應用服務器將調解請求並從中獲取值或發送更新,數據庫,視情況而定......只有在應用程序確信應用程序服務器確實代表了它聲稱代表的特定用戶之後。

這是一個基本原則是,任何事情你不用管,你不能相信。

「爲什麼它會有所作爲」是「哈!我砍死一個用戶的密碼」之間的區別:「哈!我偷了你的數據庫。」應用程序服務器可以將任何請求認證爲對所呈現的特定最終用戶憑證是合法的......而在很大程度上,數據庫沒有準備好做任何類型的事情。

終端用戶(而不是應用程序)將授權給應用服務器,應用服務器將驗證對數據庫的憑證,提供提示,以驗證失敗的原因?用戶沒有發現,不正確的密碼,我們不知道,我們不在乎 - 抱歉,登錄失敗。給我們您的電子郵件地址,我們會向您發送支持電子郵件,如果這不是我們存檔的電子郵件,我們會假裝我們已經做到了。提示幫助黑客。

店...貝寶賣家憑證

好吧,你要確保這不是從中間被禁止的東西section 10.1.2 of the Paypal Developer Agreement「收集,獲取,使用或儲存」。

那麼,你如何做到這一點?答案的這一部分使我們略微超出了範圍,因爲有很多選擇,景觀發生了變化,對於「最好」的方式,這主要是一個意見問題,但我認爲ASP或PHP將是最直截了當。

把它想象成構建一個支持數據庫的網站,沒有讓它變得漂亮的麻煩,因爲沒有人會看到它,除了你的應用程序的後端...還有你的「網絡服務」。

我一直相信,我不知道我在做什麼

這使您遙遙領先的人可怕的數字誰沒有意識到,他們不知道是什麼他們在。

+0

這是無限的幫助,從字面上給我所有的信息,我需要頭正確的方向。我將着手對如何設計與我的桌面應用程序接口的應用程序服務器的信息進行評分,並將所有數據庫邏輯移至此處。非常感謝! –

+0

+1以清楚解釋過程。 –