Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RESTAPI-安全问题_Java_Rest_Firebase_Struts2_Google Login - Fatal编程技术网

Java RESTAPI-安全问题

Java RESTAPI-安全问题,java,rest,firebase,struts2,google-login,Java,Rest,Firebase,Struts2,Google Login,因此,这是我获取用户配置文件的方法之一: public static UserProfile getUserProfile(String uid) { if (StringUtils.isBlank(uid)) { return null; } Session session = HibernateUtil.getSession(); UserProfile userProfile = null;

因此,这是我获取用户配置文件的方法之一:

public static UserProfile getUserProfile(String uid) {
        if (StringUtils.isBlank(uid)) {
            return null;
        }
        Session session = HibernateUtil.getSession();
        UserProfile userProfile = null;
        try {
            userProfile = (UserProfile) session.createQuery("from " + UserProfile.class.getSimpleName() + " where uid = :uid").setParameter("uid", uid).uniqueResult();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(session.isOpen()) {
                session.close();
            }
        }
        if (userProfile != null) {
            return userProfile;
        }
        return null;
    }

这是映射到www.example.com/getUserProfile的,我觉得这是一个非常容易破解的API。任何人都可以猜测UID,整个数据库都是围绕UID构建的。所有API都在前端。任何人都可以看到我使用的方法以及该方法接受的参数。我是不是想得太多了,还是我真的错过了什么?Firebase在成功登录时提供UID。我如何真正验证用户实际上就是用户所说的用户?这对我有什么好处;我已经验证了用户?比如,好吧,我已经验证了用户实际上是黑客,我仍然没有任何东西。

如果您担心数据库的安全性(您应该这样做),您需要使用安全规则来限制对经过身份验证的用户只应有权访问的部分数据库的访问


要想有效地学习安全规则,需要学习的内容很多,但最好的出发点是。特别是对于您的情况,请阅读。

我相信您正在寻找类似自定义身份验证:

正如您在评论中提到的,您正在使用自己的MySql数据库。这允许您将firebase身份验证与您自己的自定义方法集成


或者,另一种方法是使用firebase admin或函数访问api,同时设置firebase层来管理身份验证和用户。

“我如何真正验证用户是否就是用户所说的用户?”-这称为。这应该发生在你允许获得用户配置文件之前…猜测一个真实的UID是相当困难的。故意地这比猜密码还难。你特别关心什么?如何进行身份验证?用户使用框架提供的api进行身份验证。你不能自己做。我正在使用我自己的数据库MySql。