0

介绍

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

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

我的问题

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

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

4

2 回答 2

0

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

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

于 2013-05-21T08:28:24.903 回答
-1

如果您选择加密方式:

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

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

于 2013-05-21T08:29:12.877 回答