REST API - 安全问题



所以这是我获取用户配置文件的方法之一:

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。如何真正验证用户是否确实是用户所说的那个人?这对我有什么影响;我已经验证了用户?就像,好吧,我已经验证了实际上是黑客的用户,我仍然什么都没有。

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

使安全规则有效,需要学习大量内容,但最好的起点是文档。 特别是对于您的案例,请阅读基于用户的安全性。

我相信

您正在寻找类似自定义身份验证的东西:

https://firebase.google.com/docs/auth/web/custom-auth

正如您在评论中提到的,因为您正在使用自己的 MySql 数据库。这样,您就可以将 Firebase 身份验证与您自己的自定义方法集成在一起。

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

最新更新