REST SECURE SECRET KEY

时间:2017-02-14 11:33:54

标签: java json rest security secret-key

我正在编写一个JAVA REST Web服务,我试图了解它是如何工作的,但我设法制作了简单的方法,我的客户端将发送带有信息的JSON,服务器做了一些事情用它。很容易。

所以我在做什么:我的客户想要创建一个新对象,例如一个帐户,但我不希望世界上的每个人都只是将json发送到我的网站并创建一个对象。 但是,我不想过滤IP,因为我不知道谁将使用我的客户端应用程序。

那么我做了什么来阻止每个人简单地发送数据?我为玩家创建了一个密钥,他们使用它像: http://[website]/[Applicationname]/Webresources/[SECRETKEY]/create (发送带有请求的json)

这是有效的,因为现在只有拥有密钥的人才可以创建,并且只有在我给它们时才会获得密钥。我很确定他们不会把这个秘密密钥交给其他人,因为如果他们这样做,他们只会搞砸自己,他们的服务会得到大量假数据...... 但是我希望它更安全,所以没有人可以获得密钥,而且我也不知道HTTPS是否也会隐藏域+参数,我想不是,对吧?

所以我的问题是:如何在没有人知道密钥是什么的情况下发送密钥?

1 个答案:

答案 0 :(得分:2)

使用HTTPS,发送您在其中指定密钥数据的POST请求。您应将内容类型指定为“x-www-form-urlencoded”。内容应该被编码,拦截网址的对手将无法破译身体。

但是,对于通过在URL路径中使用密钥发送每个请求,您的实现非常不安全,因为拦截REST调用的任何攻击者只需通过查看URL即可知道密钥。实现起来越来越困难,但如果您可以执行Basic Auth或OAuth授权服务,它将仅授权具有发布给他们的有效令牌的特定用户访问该服务,这是保护REST服务的一般方法。