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

时间:2015-06-02 11:00:15

标签: php encryption https client-server

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

1 个答案:

答案 0 :(得分:0)

将两个加密层相互叠加是没有意义的。如果您使用的https应该是a)安全且b)足够,除了非常特殊情况。

除此之外:没有可靠的方法在应用程序级别上在Web客户端和服务器之间实现安全加密。问题只是在客户端加密这样的所有知识,服务器将能够再次解密数据将使努力无效。 除了使用不对称的基于密钥的加密时,如ssl所做的那样,但是 为https协议做了什么。

哦,还有旁注:您在代码示例中提到的md5 sum算法是 not 加密,它是散列。顺便提一下,非常基本的哈希提供非常低的安全性。这是完全不同的东西。你当然可以在客户端散列密码(通过使用javascript,而不是php),但最终没有任何意义。

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

玩得开心!