2015-12-17 34 views
2

我是PHP新手,我想知道我是否正確編寫代碼。我需要從我的android應用程序發送數據到我的服務器。我現在用php做。 (這是正確的方式,如果不是,我應該怎麼用這個?)使用php發送變量的最安全的方式

所以,如果我把它們傳遞給我的服務器是這樣的:

www.myserverexample.com/myPhpScript.php?variable1=text1&variable2=text2 

好像這是不正確的辦法。以及如果我需要發送20個變量到服務器,這是否仍然是好的,看起來這似乎不安全。

(上正確的變量的所有驗證在PHP腳本完成,然後發到我的數據庫)

+1

總之,不 - 這是傳遞數據最不安全的方式。 –

+0

這就是我的想法,但你建議我用什麼? –

+0

如果您正在處理用戶輸入,請使用mysqli或PDO準備好的語句 – BRoebie

回答

4
  1. 使用HTTPS。現在至少有3個組織可以從中獲得免費證書。使用HTTPS時,GET和POST變量都受到保護。

  2. 你打算使用共享主機還是專用主機?您將如何保護您的Web服務器日誌?這些變量的價值有多敏感或個人?在決定GET是否安全之前,我們需要知道這一點,因爲整個URL都會被記錄下來。

  3. 值是否改變了服務器上的任何內容?像更新數據庫或文件?如果是這種情況,你應該使用POST。

如果您控制自己的Web服務器日誌(即不共享主機)並且這些值不是特別敏感,GET就可以了。否則使用POST。

-1

您使用GET方法。 這個工作,但並不安全,而不是如何,如果你需要將數據發送到安全 你需要通過SSL使用POST方法的服務器,你應該發送任何敏感數據

+2

如果你使用SSL,GET和POST同樣安全。如果URL是可見的,那麼GET只是一種安全風險,就像在瀏覽器中(它在地址欄中那樣)。以編程方式使用GET與POST一樣安全。只要確保使用HTTPS。 –

+0

'以編程方式使用GET與POST'一樣安全。服務器日誌文件包含GET請求的所有參數。 – greenapps

+1

如果外部攻擊者可以訪問您的服務器的日誌文件,您還有其他問題。 –

-2

發送客戶端之間的數據(Android的應用程序)和服務器(PHP的Web應用程序)可以做許多方法。

最知名的方式是https協議,但在我們深入研究之前,您應該熟悉HTTP方法!

什麼您使用的是現在是GET方法,它通過URL發送數據,它的所有人都看到,所以很明顯它的安全!

您最多使用POST方法來解決這個!

然後再考慮使用HTTPS認證,因爲它加密您的數據,使其無法被竊取

+0

是的!事實上,這正是我期待的! –

+1

GET實際上並不安全。它使用HTTPS而不是HTTP來確保安全。在瀏覽器中訪問站點時,GET和POST只是一個安全問題,而不是用作程序化端點。 –

+1

@GabeSechan它是不安全的,因爲你可以使用BurpSuit等工具來嗅探數據包及其路由。 ;) – hamidrezabstn

-1

在這種情況下,我建議你使用POST請求將數據發送到PHP腳本。使用POST時,您可以在HTTP內容主體中發送的數據量沒有限制(GET請求中的查詢字符串的最大長度爲2KB,我認爲),並且您的變量更隱蔽一些,因爲它們沒有公開在查詢字符串中。

如果您切換到使用POST,則需要更改所有$_GET變量$_POST在你的PHP腳本,並以某種方式設置content-type請求頭x-www-url-form-encoded在您的應用程序。
請注意,如果您想阻止MITM攻擊並提高整體安全性 - 請使用SSL。

+0

我不知道你的意思是什麼「,並以某種方式將內容類型的請求頭設置爲x-www-url-form-encoded在你的應用中。請注意,「 –

+1

我的意思是將HTTP頭文件'content-type'改爲'x-www-url-form-encoded',這樣php就會將你的表單變量傳遞給$ _POST變量。 –

+1

參見http://php.net/ manual/en/reserved.variables.post.php瞭解更多信息 –

相關問題