如何避免在http标头中显示表单数据

时间:2014-03-20 07:48:49

标签: javascript jquery java-ee encryption web

我使用" POST"提交表单方法。但是,即使我使用" POST"提交表单。方法,我可以在http标头中看到提交的表单数据。我使用实时http标头插件来检查标头。我想保存安全信息。如果浏览器有" live http header"插件,很容易任何人都可以捕获数据。因此,如果我还想在http标头中隐藏提交的数据,我还需要做什么?

如果无法在http标头中隐藏提交的表单数据,我可以遵循哪种机制来加密客户端的数据(这样即使数据在http标头中可见,它也会采用加密格式。所以,没有人能理解)并在服务器端解密和处理数据。我完全被封锁了。
请帮帮我。 感谢任何帮助。 提前谢谢。

5 个答案:

答案 0 :(得分:3)

关于Http POST如何工作似乎有些混乱。我假设您正在客户端浏览器的调试器或服务器上查看标头。在这种情况下,发送的数据应该是可读的。客户端调试器实际上在加密并通过线路发送之前显示标题。

在服务器上,帖子数据也应该以未加密的格式提供。

如果您在表单操作中使用https://而不是http://

,那么通过互联网发送的内容将被加密

答案 1 :(得分:2)

你真的不能这样做,我的意思是你可以,但前端的任何东西都可以很容易地进行逆向工程。保证表单数据的最佳选择是实现CSRF,其中Jeff Atwood在here上发表了一篇好文章,评论也非常好。

除此之外;就像上面的评论之一所说,您可以使用SSL来保护进出服务器的数据。

对此

的评论时间不够长

在不知道您的技术堆栈的情况下获得安全的步骤将是获取您的邮件请求的来源和目的地的SSL证书,如果您无法控制目的地,那么您的旅程将在此结束,在数百种可用的SSL证书提供商中,我通常使用Start SSL,因为它是免费且非常好的。

您需要向我们提供有关您的技术堆栈的更多信息,但是假设您正在使用PHP和Apache,您需要在服务器上执行一些操作才能获得证书。

首先使用以下命令生成私钥:

openssl genrsa -des3 -out www.yourdomainname.com.key 2048

它会向您询问一些细节,尽可能将它们全部填写完整,并将其写在某处,特别是密码。

一旦你有了这个,你需要生成证书签名请求或简称CSR,这是通过运行以下命令来实现的

openssl req -new -key www.yourdomainname.com.key -out www.yourdomainname.com.csr

您提出的用于创建私钥的密码;在这里输入。

你也会被要求提供大量详细信息,从我的记忆中可以看出这是它的通用格式

Country Name: GB
State or Province Name (in full): London
Locality Name (city): London
Organization Name: Your company name
Organizational Unit Name: Probably IT or development
Common Name: Enter your domain name here in FULL, without http://

当它要求

Email Address
password challenge
optional company name

不要输入任何内容......

使用

验证您的CSR
openssl req -noout -text -in www.mydomain.com.csr

您现在可以使用此CSR通过Start SSL对您的请求进行签名一旦您从开始SSL获得crt,就打开您的服务器配置(通常在http-vhosts.conf中使用apache /etc/apache2/extra/并创建此阻止它内部

<VirtualHost *:443>
  DocumentRoot /var/www/www.yourdomainname.com
  ServerName www.yourdomainname.com
  SSLEngine on
  SSLCertificateFile /path/to/your/www.yourdomainname.com.crt
  SSLCertificateKeyFile /path/to/your/www.yourdomainname.com.key
  SSLCertificateChainFile /path/to/StartSSL.crt
</VirtualHost>

重新启动apache,您应该可以使用https

访问您的网站

希望我的一切都正确,我会针对任何问题进行编辑。

答案 2 :(得分:1)

嗯,没有简单的方法,但我发现的其他帖子:

  1. 查看this帖子。这不会隐藏POST中的值,但使用jquery序列化它们。您可以使用自己的约定使其看起来像一团糟。

  2. 查看this 文章。 CLearly解释了您应该了解的有关跨站点请求伪造的所有信息。

  3. 查看this链接。它们提供了一个使用加密表单的工具包,称为Open Data Kit。
  4. 您使用的是OpenSSL吗?

答案 3 :(得分:1)

最简单的解决方案是在您的服务器上启用HTTPS支持,并通过关闭标准HTTP连接器,仅通过HTTPS提供页面。

您不需要进行任何特殊开发,只需切换到HTTPS即可确保数据无法在传输过程中读取,并向您网页的查看者保证他们正在与您的服务器进行通信,并且不是有人在做中间人攻击。

HTTPS技术透明地处理您尝试手动处理的所有问题。浏览器将与服务器交换临时加密密钥,该密钥用于加密来回传输所有数据的数据。

服务器包含由证书颁发机构签名的证书,用于对数据进行签名,向浏览器证明它确实是您的服务器。

所有这些都以完全透明和自动化的方式处理,无需任何额外的开发。您只需要联系证书颁发机构并让他们为您创建证书,请参阅此tutorial

您还需要在服务器上启用HTTPS,这是通过配置完成的,所有服务器都支持它。

答案 4 :(得分:0)

“标题”只是另一种封装。这与“身体”的抽象概念没有区别。对于通过网络传输数据而言,其中一个或多或少不安全,因此您的重点不应该是解决此问题。此外,技术上发布的数据也在体内。

如果安全是您的目标,那么您将专注于防止如果他们在您的客户端/服务器交换中拥有特权,他们可以做什么。然后,您将使用SSL,仅限http的cookie(或经过深思熟虑的本地存储)良好的会话超时,以及您通常的智能编码实践。一般来说,我们应该假设大多数数据在传输过程中都是可见的,并且优先考虑使这个特权对攻击者来说更有价值

如果你真的真的担心针对你的表单发布数据的MITM攻击,我想你可以把一个小的JS放在一起加密,甚至可以发布网络套接字,但这类似于没有真正做任何事情恕我直言。