Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/135.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
C# 验证应用程序和服务器之间的通信量 介绍_C#_Php_Winforms_Apache - Fatal编程技术网

C# 验证应用程序和服务器之间的通信量 介绍

C# 验证应用程序和服务器之间的通信量 介绍,c#,php,winforms,apache,C#,Php,Winforms,Apache,我有一份带内置注册表的申请表。注册表单只需将发布到我的Web服务器,它将为用户创建帐户。假设注册页面(在服务器上)位于https://mywebsite/register.php,阻止用户手动进入并注册帐户(向其发送POST参数时,显然没有HTML表单字段或任何内容) 用户只需在我的应用程序和Web服务器之间放置一个代理,获取请求并修改它们。 对于大多数人来说,这可能不是一个问题,但对于某些功能(Web服务器不仅仅处理注册请求),我需要知道请求来自应用程序,而不是用户 我的问题 我如何知道请求来

我有一份带内置注册表的申请表。注册表单只需将
发布到我的Web服务器,它将为用户创建帐户。假设注册页面(在服务器上)位于
https://mywebsite/register.php
,阻止用户手动进入并注册帐户(向其发送
POST
参数时,显然没有HTML表单字段或任何内容)

用户只需在我的应用程序和Web服务器之间放置一个代理,获取请求并修改它们。 对于大多数人来说,这可能不是一个问题,但对于某些功能(Web服务器不仅仅处理注册请求),我需要知道请求来自应用程序,而不是用户

我的问题 我如何知道请求来自应用程序且未被修改?就我个人而言,我曾考虑过通过某种公式(像那些硬件验证器那样)对数据进行加密(除了https
),然后在Web服务器上解密


我想听听您对此的想法,可能还有您的解决方案。

浏览器和使用某些工具的恶意用户之间没有区别。浏览器可以读取和发送的任何内容,用户也可以。客户端(JavaScript、HTTPS)加密不会有帮助,因为用户只需从您的页面提取使用的加密方法,然后用自己的数据重复加密


如果要防止
POST
ing随机数据,可以使用。如果您可以解释应用程序如何向服务器发送数据,以及您希望如何(以及为什么)保护这些数据,也许可以给出更有用的答案。

如果您选择加密方式:

您不需要加密所有数据, 只需一个字段就足够了,您只需确保POST请求的来源是您的应用程序,而不是手动输入的


我的解决方案是添加一个隐藏字段,该字段将保存一个加密值,该值取决于动态内容(会话id、时间、用户电子邮件)并在php文件中使用与解密密钥相同的加密密钥。

用户仍然可以请求使用加密密钥获取此隐藏输入,然后使用此密钥将任意数据发送回。您会说:“您只需要确保POST请求的来源是您的应用程序,而不是手动操作”,但这是OP的问题:“我如何知道请求来自应用程序且未修改?”。用户不应该知道密钥是什么。例如,如果密钥基于
时间
,即使他使用了加密值,也无所谓,因为
时间
不再相关。如果我错了,请更正“用户不应该知道密钥是什么。”-那么用户(或应用程序)将如何加密数据?隐藏的HTML字段并不是真正隐藏的。