Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 不使用https保护我的数据_Asp.net_.net_Asp.net Mvc_Https_Asp.net Mvc 5 - Fatal编程技术网

Asp.net 不使用https保护我的数据

Asp.net 不使用https保护我的数据,asp.net,.net,asp.net-mvc,https,asp.net-mvc-5,Asp.net,.net,Asp.net Mvc,Https,Asp.net Mvc 5,我使用asp.NETMVC-5Web应用程序构建了一个面向公众的网站。现在,该网站是公开的,因此不需要提供https。但是我有一个联系我们的表单,用户可以在表单中提交一条消息以及他们的姓名、电子邮件和/或电话号码。所以这些信息在某种程度上可能被认为是敏感的。但是我不想只为此表单实现安全证书。因此,我的问题是,他们是否是一种在不使用https的情况下保护联系我们表单提交的方法?例如手动加密和解密提交的表单?您可以在客户端实现某种加密。请参阅,以获取有帮助的库 您需要想出一种在客户机和服务器之间共享

我使用asp.NETMVC-5Web应用程序构建了一个面向公众的网站。现在,该网站是公开的,因此不需要提供
https
。但是我有一个联系我们的表单,用户可以在表单中提交一条消息以及他们的姓名、电子邮件和/或电话号码。所以这些信息在某种程度上可能被认为是敏感的。但是我不想只为此表单实现安全证书。因此,我的问题是,他们是否是一种在不使用
https
的情况下保护联系我们表单提交的方法?例如手动加密和解密提交的表单?

您可以在客户端实现某种加密。请参阅,以获取有帮助的库


您需要想出一种在客户机和服务器之间共享密钥的方法,并在服务器端实现解密。

您可以在客户机上使用此库进行RSA加密 只需生成公钥\私钥对,将公钥插入网页(不要插入私钥!),在客户端加密:

var encrypt = new JSEncrypt();
encrypt.setPublicKey(yourpublickeyvariable);
var encrypteddata = encrypt.encrypt(datatosend);
其中datatosend只是param\值的串联(除以要在服务器上拆分的某个字符)


然后在服务器上,您可以使用RSACryptServiceProvider对数据进行解密

要安全地发送联系人,需要两件事:


  • 在发送数据之前对数据进行加密,加密方式只有您的服务器才能解密
  • 将其发送到您的服务器
因此,当然,您可以使用javascript加密数据并将其加密发送到服务器,但没有安全的方法:

您首先需要一种方法来验证服务器。HTTPS使用证书颁发机构的概念来实现这一点。这并不完美,但总比没有好

如果您不想仅为该表单使用https,那没关系:只需为整个网站使用它!
然后,您可以安全地发送数据,保护访问者的隐私,防止ISP在您的网站中插入广告,如果您使用http2,甚至比http更快。

最后,接受冲击并实现HTTPS可能比您找到的任何其他替代方案都要简单和直接得多。请参阅您无法做到这一点。HTTPS不仅仅是加密,它还涉及身份验证。@Tom我明白你的意思,有没有某种密钥交换方法可以在某种程度上确保真实性?@Tom实现HTTPS将比我想象的所有方法都简单。是的。这并不是那么难:)如果你想正确使用它,在整个网站上使用https,它将更容易、更安全、更不容易出错。(而且,如果你必须添加更多的表单,它们也将受到保护!)这将是不安全的:公钥将使用http发送,因此黑客可以用自己的公钥替换它。那又怎样?你读过《凤凰社》吗?如果没有身份验证,黑客只需打开表单并发布,他不需要密钥就可以做到这一点。问题是如何保护用户数据,以便只有服务器才能读取数据,而不是如何确保“特定”用户发布数据。对于这个场景,使用auth。我知道。你的解决方案是错误的。使用您的解决方案,任何人都可以用自己的密钥替换您的PublicKeyVariable,服务器将接收垃圾,黑客可以解密数据。您需要能够证明您的PublicKeyVariable是您谈话的服务器的公钥,而不是陌生人的公钥。https与CA系统一起提供帮助。>以只有服务器才能解密的方式发送数据之前对数据进行加密-这不是真的。为此,应该使用非对称加密。您认为HTTPS从一开始是如何工作的?非对称加密并不能解决问题(仅供参考,HTTPS使用对称和非对称加密)。非对称加密不能证明您用来加密的密钥是正确的。它不验证密钥。是的。