确保http帖子来自我的applet而没有其他人?

时间:2014-05-31 00:14:35

标签: java php mysql applet

我有一个applet通过http post请求与php通信,然后我的php脚本在mysql数据库中插入数据。所以问题是,我猜任何人都可以发一个http发布请求并将数据添加到我的mysql数据库,如果他们现在是“发布”名称,当然我不想要那样。

所以我想有一个som解决方案,我的php可以确定http请求真的来自我的applet而没有其他人。我很感激有关如何解决这个问题的想法。发送的数据不包含任何秘密,因此如果可以在没有加密的情况下解决它,则不需要加密。

提前致谢。

4 个答案:

答案 0 :(得分:0)

如果您在通信时无法使用加密,那么答案就是您无法确定。

答案 1 :(得分:0)

事实上,即使使用加密,也无法确定请求是由您的applet还是其他完全模仿其行为的内容做出的。您需要构建应用程序,以便它可以处理此问题。

答案 2 :(得分:0)

加密将有助于保护您为实现目标而实施的任何方法,但它本身不会做任何事情。

您想要的是验证帖子消息。这通常是通过让您的客户端(此处为applet)使用只有applet和服务器知道的密钥对POST消息进行签名(HMAC)来实现的。这里的挑战是您需要在客户端安全地存储密钥。

如果我是你,我会检查用户身份并在您网站的安全区域托管小程序,确保您的小程序在执行POST请求时重新使用经过身份验证的用户的HTTP会话。添加到针对标准攻击的基本安全措施(即跨站点请求伪造,重放攻击等)。此设置可确保您的请求来自授权用户的网站。

答案 3 :(得分:0)

您可以通过在客户端上生成RSA密钥对并将公钥发送到服务器来使applet注册。然后,服务器会跟踪每个注册客户端的公钥。

在每个POST上,客户端使用私钥签署一些数据,并包括签名和公钥(或公钥的哈希)以标识自己。服务器验证公钥是否已注册,并验证签名。

没有办法模仿从客户端窃取私钥或破坏RSA加密的缺点。好吧,我想你可以录制和重播其他人的POST。有一个问题需要解决。

但是,您可以让假客户端按照注册步骤发送公钥,然后该假客户端可以随意与所有有效客户端一起发布。所以也有问题要解决。