gpt4 book ai didi

android - 我应该使用什么来保护 REST 网络服务中的参数

转载 作者:行者123 更新时间:2023-11-29 18:01:43 25 4
gpt4 key购买 nike

我想开发一个身份验证网络服务,它可以在安卓应用程序中用于登录和访问其他服务。所以基本上我通过 HTTP 请求发送凭据并在一切正常时授予用户访问权限。我需要保护这些凭据,以免它们被不需要的用户拦截。

我将 eclipse 与 Tomcat 7、Jersey 一起用于我的其余 Web 服务、spring 和 hibernate。我的网络服务是这样的

@GET
@Path("/login/{id}/{pass}")
@Produces(MediaType.TEXT_HTML)
public String login(@PathParam("id") int id,@PathParam("pass") String pass) {
String res="Null parameters";

if(id!=0 && !pass.isEmpty())
{
try {
User user = service.getOne(id);
if(user.getPass().equals(pass))
res="Success";
else
res="Fail";
}
catch (Exception e) {
res="User not found";
}
}
return "<html> " + "<title>" + "Result" + "</title>"
+ "<body><h1>" + res + "</body></h1>" + "</html> ";
}

我用它来测试浏览器,我还没有开始编写客户端代码。

我真的在这里挠头,我一直在网上四处寻找,有些人在谈论 OAuth 2.0 和其他人在谈论 HMAC,我不知道该使用哪个,如果有另一种方法请让我知道。

如果您知道有关如何为我的项目实现安全性的有用教程,那就太好了,欢迎任何其他建议。非常感谢

最佳答案

这实际上取决于您的应用程序所需的安全级别。

有很多复杂的安全系统,但对于大多数应用程序来说,这些都是相当大材小用的。

如果您只是在寻找一些基本的密码保护,而不处理付款或真正敏感的数据,您可以执行以下简单操作。

  1. 如果可以,让您的服务通过 https 运行。所有数据都将自动受到保护。

  2. 散列密码。许多语言已经内置了对简单哈希的支持,例如 MD5 和 SHA1,如果没有,您可以在谷歌上搜索它们的实现,它们经常被使用。这意味着即使您作为管理员也不知道真正的密码。您只需将经过散列处理的通行证保存在您的数据库中,然后比较散列值。

  3. 在您的客户端,为您的散列添加盐。可能如果你用谷歌搜索第 2 步,它已经在那里了,否则它只是意味着你做了类似 hash("132rjfASDF!"+password"+vnsadfr1!Z"); 的事情。让它更加随机。

这些简单的步骤可以非常容易和快速地实现,并且将为您的服务提供大部分时间所需的所有安全性。如果你真的要处理支付和敏感数据等事情,你应该考虑更严肃的解决方案。

附言。不要认为使用“post”而不是“get”是任何一种安全措施,从 Android 的角度来看,您使用哪个并不重要。无论如何,人们将不得不使用程序来获取网络连接以查看链接(例如 WireShark),并且读取 GET 参数与读取 POST 参数一样容易。

关于android - 我应该使用什么来保护 REST 网络服务中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15657537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com