2013-03-23 56 views
2

我運行了一個外部託管的網站(linux platofmr),安裝了mysql,php技術。我需要我的C#應用​​程序從網站收集數據。從我的網站發送敏感數據到我的C#應用​​程序

我有我的網站上的MySQL數據庫和我想給我的用戶名和密碼才能訪問某些敏感數據(使用PHP腳本)

我目前的設計看起來是這樣的:

C#應用程序發佈到網站上的login.php腳本。

e.g mywebsite.com/login.php?username=admin?password= MD5HashedPassword

腳本生成一個空白頁面,點擊「OK」,如果用戶名和密碼的數據庫匹配。

現在我認爲這對於剛剛登錄可能很安全,但是如果我希望登錄腳本生成包含敏感信息的XML數據,我不相信這是一種安全的方式。我是否認爲這是正確的?

那麼我該走什麼方向。我的應用程序和網站之間是否應該有某種PHP會話?這是一個簡單的事情嗎?我應該全部放棄使用PHP並使用不同的技術嗎?

歡迎任何意見和建議。

很多謝謝

+1

用戶名/密碼包含認證問題。像SSL這樣的東西將覆蓋傳輸過程中的數據清除問題(通過使用HTTPS而不是HTTP)。 – Joe 2013-03-23 14:16:26

+0

也許http://stackoverflow.com/q/549/1741542和[OWASP](http://www.owasp.org)有幫助。 – 2013-03-23 14:17:35

+0

考慮向您的網站添加SSL證書並通過https撥打電話。這將加密電線上的數據。這是一個可能的簡單解決方案。 – bUKaneer 2013-03-23 14:18:40

回答

3

這應該是蠻好的,只要你的交易滿足以下條件:

  1. POST請求的PHP頁面從C#服務器到PHP服務器發生,並且用戶的瀏覽器不不是執行POST。如果用戶的瀏覽器執行POST服務到PHP服務器,那麼攻擊者可以簡單地用Burp Suite這樣的代理攔截該請求,並提取哈希密碼,然後發出其他惡意請求。

  2. 用戶名/密碼作爲POST參數傳遞,而不是查詢字符串中的GET參數。你使用這個例子:e.g mywebsite.com/login.php?username=admin?password=MD5HashedPassword它看起來像一個使用查詢字符串的GET請求。這是不是安全。

  3. POST請求只能通過HTTPS/SSL而不是普通的HTTP。這將確保通信從TCP向下加密。

+0

謝謝你本。我可以澄清幾件事情。我認爲在網頁上的正常形式內的POST方法做同樣的事情mywebsite.com/login.php?username=admin?password=MD5HashedPassword 我誤解了嗎?所以POST總是使用https?那麼這是否意味着由服務器生成的頁面也將通過面向連接的SSL鏈接? – Prof 2013-03-23 23:27:16

+0

@Prof POST不一定使用https,儘管它可以。 POST請求可以通過http或https/SSL。區別在於POST請求包含請求正文中的鍵/值對,而不是[查詢字符串](https://en.wikipedia.org/wiki/Query_string)。 [此頁面有一些很好的示例,說明原始POST請求和響應的樣子](http://www.opencalais.com/HTTPexamples)。 – 2013-03-23 23:34:48

+0

再次感謝您。我錯了POST。所以,我應該使用像HttpWebRequest或WebClient類和POST的URL來包含https而不是http。所以響應數據將通過SSL連接,因此是安全的?我可以問,這是大多數桌面應用程序用於身份驗證的方式嗎?以Valve的Steam服務爲例,它是否使用類似的東西,或者它們會使用自己的特殊套接字組件與那裏的身份驗證服務器進行接口 – Prof 2013-03-24 00:33:10

-1

SSL是保護線路上數據的標準方式。如果您有證書,只需將其加載到您的Web服務器(服務器之間的流程各不相同),並確保您的程序將https指定爲協議。

您認證系統看起來...非標準。如果您打算使用編程式http請求,通常無法使用您的平臺的表單身份驗證。但不是推出自己的,你應該更喜歡基本或摘要認證。在這種情況下,憑證將作爲查詢字符串的一部分傳遞到標題中,而不是顯式傳遞。由於您使用SSL,因此基本身份驗證是安全的。

相關問題