验证应用程序和服务器之间的流量

时间:2013-05-21 08:24:02

标签: c# php winforms apache

简介

我有一个内置注册表单的应用程序。注册表单只是POST到我的网络服务器,它将为用户创建帐户。假设注册页面(在服务器上)位于https://mywebsite/register.php,是什么阻止用户手动去那里并自己注册帐户(当向它发送POST个参数时,显然没有HTML表单字段或任何东西)。

用户可以简单地在我的应用程序和Web服务器之间放置代理,获取请求并进行修改。 对于大多数人来说这可能听起来不是问题,但对于某些功能(网络服务器不仅仅处理注册请求)我需要知道请求来自应用程序而不是来自用户。

我的问题

我如何知道请求来自应用程序并且未经修改?就个人而言,我曾考虑通过某些公式加密数据(另外https)(就像那些硬件验证器那样)并在网络服务器上解密它们。

我想听听您对此的看法以及可能的解决方案。

2 个答案:

答案 0 :(得分:0)

浏览器与使用某些工具的恶意用户之间没有区别。浏览器可以读取和发送的任何内容,用户也可以。 Clientside(JavaScript,HTTPS)加密无济于事,因为用户可以简单地提取页面中使用的加密方法,并使用自己的数据重复加密。

如果您想阻止POST随机数据,可以使用anti-forgery-token。如果您可以解释您的应用程序如何将数据发送到服务器以及您希望如何(以及为什么)保护数据,那么可能会给出更有用的答案。

答案 1 :(得分:-1)

如果您选择加密方式:

您无需加密所有数据, 只需要一个字段即可,您只需要确保POST请求的来源是来自您的应用程序而不是手动。

我的解决方案是添加一个隐藏字段,该字段将保存一个加密值,该值取决于动态内容(session_id,时间,用户的电子邮件),并使用相同的加密密钥作为php文件中的解密密钥。 / p>