簡體   English   中英

HTTPS是否加密POST數據?

[英]Does HTTPS make POST data encrypted?

我是編程世界的新手,我已經學習了很多關於使用HTML-AJAX-PHP-MySQL的基本CRUD類型Web應用程序。 我一直在學習編碼作為一種愛好,因此只使用了WAMP / XAMP設置(localhost)。 我現在想冒險使用VPS並學習設置它並最終開辟一個供公眾使用的新項目。

我注意到每當我使用AJAX或甚至常規POST將表單數據發送到我的PHP文件時,如果我打開Chrome調試器,然后轉到“網絡”,我可以看到正在發送的數據,以及后端PHP文件它正在發送數據。

如果用戶可以看到這個,他們可以攔截這些數據,修改它,並將它發送到同一個后端PHP文件嗎? 如果他們創建自己的簡單HTML頁面並將POST數據發送到我的PHP后端文件,它會起作用嗎?

如果是這樣,我該如何避免這種情況? 我一直在閱讀使用HTTPS,但我仍然感到困惑。 使用HTTPS意味着我必須以任何方式改變我的代碼嗎?

瀏覽器顯然會知道它正在發送什么數據,它將在調試器中顯示它。 HTTPS加密傳輸中的數據,遠程服務器將在收到后對其進行解密; 即它可以防止中間的任何第三方能夠讀取或操縱數據。

這可能會讓您感到震驚(或許不是),但與服務器的通信只能通過HTTP(S)進行。 這是一個簡單的文本協議。 任何人都可以隨時隨地向您的服務器發送任意HTTP請求。 HTTPS加密與否。 如果您擔心有人操縱通過瀏覽器調試工具發送的數據......您的擔憂完全是錯誤的。 有許多更簡單的方法可以將任意精心設計的HTTP請求發送到您的服務器,甚至無需訪問您的站點。

您的服務器只能依賴它收到的數據,並且必須根據自己的優點嚴格驗證給定的數據。 試圖以任何方式鎖定客戶端都是徒勞的。

這甚至比這更簡單。 無論您是使用GET還是POST來傳輸參數,HTTP請求都會由用戶的客戶端發送到您的服務器,無論是Web瀏覽器,telnet還是其他任何東西。 用戶可以簡單地知道這些POST參數是什么,因為它是發送它們的用戶 - 無論用戶是否參與過程。

你從錯誤的一端解決問題。 編程最重要的規則之一是: 永遠不要相信用戶條目是編程的基本規則! 用戶可以而且犯錯誤,其中一些試圖傷害你或偷你。 歡迎進入俱樂部。

因此,如果您收到的POST或GET參數不是您所期望的,無論是錯誤的還是惡意的意圖,您都不得允許您的代碼執行任何可能以任何方式損害您的操作。 如果你的代碼按照它的設計方式,只是通過向你的某個頁面發送特定的POST值來使你容易受到傷害,那么你的設計就有問題,你應該重新考慮這個問題。

在設計程序時,這個問題是一個主要問題,您會發現大量有關如何防止代碼反對您的文檔,教程和提示。

別擔心,這不是很難處理,而且你與關注想出了自己證明你是在盤算的東西如何好,如何COMMITED你產生良好的代碼的事實,沒有理由你應該失敗。

如果您在接受安全更新時遇到特定問題,請隨意發布其他問題。

每個人都可以向您的應用程序發送他們想要的任 HTTPS只是意味着他們無法查看和操縱其他人發送給您的應用程序的內容。 但是你總是必須假設發送到你的應用程序的內容是POST,GET,COOKIE或其他什么是邪惡的。

HTTPS在傳輸中加密,因此無法解決此問題。

你不能相信任何客戶端。 通過webform發送的任何數據都可以設置為客戶想要的任何數據。 他們甚至不必攔截它。 他們只需修改頁面上的HTML即可。

沒有辦法解決這個問題。 您可以而且應該進行客戶端驗證。 但是,由於這通常只是JavaScript,因此可以修改/禁用它。

因此,您必須在收到數據服務器端時對其進行驗證。 數字應為數字,刪除任何反斜杠或無效的特殊字符等。

在HTTPS中,之前建立了TLS通道並且傳輸了HTTP數據,因此從這個角度來看,GET和POST請求之間沒有區別。

它是加密的,但只能用於防止mitm攻擊。

你的php后端不知道它收到的數據來自何處,這就是為什么你必須假設它收到的任何數據直接來自黑客。

由於您無法防止發送令人討厭的數據,因此您必須確保處理所有安全接收的數據。 采取的一些步驟涉及確保無法執行上傳的任何文件(即,如果有人上傳php文件而不是圖像),確保收到的數據永遠不會直接與數據庫交互(即https://xkcd.com/327 / ),並確保您不會因為他們說他們以用戶身份登錄而信任某人。

為了進一步保護,您可以對收到的帖子數據進行一些研究,並查看最佳實踐。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM