REST 安全密钥
REST SECURE SECRET KEY
我正在写一个 JAVA REST web 服务,我试图了解它是如何工作的,但我已经设法制作了简单的方法,我的客户将发送 JSON 包含信息,然后服务器用它做一些事情。很简单。
所以我在做什么:我的客户想要创建一个新对象,例如一个帐户,但我不希望世界上的每个人都简单地向我的网站发送 json 并创建一个东西。
但是我不想过滤 IP,因为我不知道谁或什么会使用我的客户端应用程序。
那么我做了什么来防止大家简单地发送数据呢?我为玩家创建了一个密钥,他们使用它的方式如下:
http://[website]/[Applicationname]/Webresources/[SECRETKEY]/create
(随请求发送 json)
这行得通,因为现在只有拥有秘钥的人才能创建,而且只有我给他们他们才能得到秘钥。我很确定他们不会把这个秘密密钥给其他人,因为如果他们这样做,他们只会搞砸自己,他们的服务将获得大量虚假数据......
但是我希望它更安全,所以无论如何都无法获得密钥,我不知道HTTPS是否也会隐藏域+参数,我想不会吧?
所以我的问题是:我怎样才能发送密钥,而没有任何人知道密钥是什么?
使用 HTTPS,发送 POST 个您在正文中指定密钥数据的请求。您应该将内容类型指定为 "x-www-form-urlencoded"。内容应该被编码,拦截 url 的对手将无法破译正文。
但是,您的实现对于使用 URL 路径中的密钥发送每个请求是非常不安全的,因为任何拦截 REST 调用的对手只需查看 url.实施起来更难、更长时间,但如果您可以执行 Basic Auth 或 OAuth 授权服务,它将只授权特定用户使用有效令牌访问该服务,这是保护您的 REST 服务的一般方法。
我正在写一个 JAVA REST web 服务,我试图了解它是如何工作的,但我已经设法制作了简单的方法,我的客户将发送 JSON 包含信息,然后服务器用它做一些事情。很简单。
所以我在做什么:我的客户想要创建一个新对象,例如一个帐户,但我不希望世界上的每个人都简单地向我的网站发送 json 并创建一个东西。 但是我不想过滤 IP,因为我不知道谁或什么会使用我的客户端应用程序。
那么我做了什么来防止大家简单地发送数据呢?我为玩家创建了一个密钥,他们使用它的方式如下: http://[website]/[Applicationname]/Webresources/[SECRETKEY]/create (随请求发送 json)
这行得通,因为现在只有拥有秘钥的人才能创建,而且只有我给他们他们才能得到秘钥。我很确定他们不会把这个秘密密钥给其他人,因为如果他们这样做,他们只会搞砸自己,他们的服务将获得大量虚假数据...... 但是我希望它更安全,所以无论如何都无法获得密钥,我不知道HTTPS是否也会隐藏域+参数,我想不会吧?
所以我的问题是:我怎样才能发送密钥,而没有任何人知道密钥是什么?
使用 HTTPS,发送 POST 个您在正文中指定密钥数据的请求。您应该将内容类型指定为 "x-www-form-urlencoded"。内容应该被编码,拦截 url 的对手将无法破译正文。
但是,您的实现对于使用 URL 路径中的密钥发送每个请求是非常不安全的,因为任何拦截 REST 调用的对手只需查看 url.实施起来更难、更长时间,但如果您可以执行 Basic Auth 或 OAuth 授权服务,它将只授权特定用户使用有效令牌访问该服务,这是保护您的 REST 服务的一般方法。