客户端和服务器通信中的消息加密

Encryption of message in client and server communication

如何在以下代码中加密在客户端和服务器之间传输的文本。我知道 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"; 
  }
?>

在彼此之上应用两个加密层没有什么意义。如果您使用 https,那应该 a) 安全且 b) 足够,very 特殊情况除外。

除此之外:没有可靠的方法在应用程序级别的 Web 客户端和服务器之间实施安全加密。问题很简单,在客户端加密这样的服务器将能够再次解密数据所需的所有知识将使努力徒劳无功。 Except 当像 ssl 那样使用基于密钥的非对称加密时,但是 为 https 协议所做的。

哦,还有一个旁注:您在代码示例中提到的 md5 和算法是 不是 加密,它是散列。顺便说一句,非常基本的散列提供非常低的安全级别。那是完全不同的东西。您当然可以在客户端对密码进行哈希处理(通过使用 javascript,而不是 php),但最后这毫无意义。

在典型情况下你应该做的是(最佳实践):传输层使用https(强制使用,拒绝使用http)。然后,在服务器端对密码应用 good 和 "salted" 哈希算法,并将该哈希值保存在数据库中。根据对这些凭据的身份验证请求,您然后比较密码的哈希值(一个来自数据库的哈希值,来自身份验证期间使用的密码)。这样,密码本身根本不会存储在服务器端。

玩得开心!