2015-06-02 160 views
0

如何在以下代碼中加密在客戶端和服務器之間傳輸的文本。我知道https將加密隧道,但我想知道如何加密文本。在客戶端和服務器通信中加密消息

如果我在腳本中使用任何加密算法,作爲服務器端腳本,加密將發生在服務器端,而不是在文本開始從客戶端流向服務器之前。

<HTML> 
    <form method="POST" action="TESTING.php" enctype="multipart/form-data"> 
    NAME: <input type="text" name="username"> 
    PASSWORD: <input type="text" name="password"> 
    <input type="submit" value="Save and Proceed"> 
    </form> 
</html> 

<?php 

    if(isset($_POST['username'])) 
    { 
    echo"db operation"; 
    } 
?> 

回答

0

將兩個加密層應用在彼此之上幾乎沒有意義。如果你使用https應該是a)安全和b)足夠的,除非非常特殊情況。

除此之外:沒有可靠的方法在應用程序級別上實現Web客戶端和服務器之間的安全加密。問題簡單的是,在客戶端加密這些服務器將能夠再次解密數據所需的所有知識將使努力無果而終。 當使用非對稱,基於密鑰的加密作爲ssl時除外,但是的作用是 https協議做了什麼。

呵呵,旁註:你在代碼示例中提到的md5求和算法是而不是加密,這是哈希。順便提一下,非常基本的哈希提供了非常低的安全級別。這是完全不同的東西。你當然可以在客戶端散列一個密碼(通過使用javascript,而不是php),但最終沒有意義。

你應該在典型情況下做什麼是(最佳實踐):使用https作爲傳輸層(強制它,拒絕HTTP使用)。然後,在服務器端對密碼應用好的和「鹽」哈希算法,並將該哈希保存在數據庫中。在針對這些憑證的身份驗證請求之後,您會比較密碼的哈希值(一個來自數據庫的哈希值,另一個來自身份驗證期間使用的密碼)。這樣,密碼本身並不存儲在服務器端。

玩得開心!

+0

首先感謝您解釋它。之所以打算這麼做,是因爲我在php中爲用戶身份驗證製作了一個小型身份驗證方案,並且我希望數據在我的方案中進行加密,以便我可以始終使用它與http或https進行加密。我想知道如何在客戶端本身加密數據,因爲php腳本中的任何加密都是服務器端處理,不能解決目的。再次感謝你 –

+1

當然,我明白你的問題。但是正如上面所解釋的那樣:這種加密對於每個定義都是不安全的鑑於此,這是無用的。甚至值得:它假裝沒有真正存在的虛假安全感。它可能容易受到攻擊,因爲所有必需的信息都必須出現在客戶端,每個客戶端。所以一個潛在的攻擊者一直在世界上製造他的攻擊。你應該相信40年來世界各地聰明的計算機科學家聚集在這個領域的經驗:-) – arkascha