java - 如何在 Java 中隐藏我的数据库信息?
问题描述
我正在尝试找出 Java 中的数据库安全性。像视频游戏、桌面应用程序和其他在其代码中使用数据库以及如何在其中存储密码的其他应用程序。
这是一个示例:
有一个应用程序使用 MySQL 数据库来存储用户数据及其信息。
用户已注册并登录到我们的应用程序。他开始时有 0 个硬币。他从商店买了100个硬币,他的硬币数据变成了100个。在我提到的步骤中,他总是使用数据库来插入和更新他的数据。
简而言之,如何在我的 Java 代码中隐藏我的数据库信息(用户名和 IP?)?
此外,我搜索了一段时间,发现您可以发送网络请求以获取信息,但是如果有人找到请求的代码,他们也可以制作他们的程序并使用与我的应用程序相同的请求。所以,我无法弄清楚这一点。
解决方案
通常,数据库位于您控制的服务器中,并且您提供 API 来发出请求。
在这些请求中,没有关于数据库用户名或密码的信息,应该在您的服务器上。
然后,您需要保护该连接。通常,你通过身份验证和授权来做到这一点。您需要向您的用户提供用户名和密码,这存在于他们对您的服务器所做的任何请求中。此外,您需要在服务器中进行控制以控制每个用户可以做什么(控制用户不能执行他们想要的任何查询)。
一种常见的方法是使用联合身份验证和授权,以及 OAuth2.0 或 OpenID 等协议。
此外,您需要确保使用 HTTPS,否则攻击者可能会捕获流量并提取所有请求信息。
推荐阅读
- android - android - java.lang.IllegalStateException:片段未附加到上下文
- ios - 自定义子视图不适合父视图
- azure-functions - 查看 Azure 函数的日志记录输出
- python - 使用分层排序按 2 列排序 [Pandas]
- sql - SQL按多列从一个序列中选择所有记录
- python - 在python中添加列标题以提取excel
- javascript - JavaScript Fetch API - 为什么在浏览器控制台中执行时返回未定义?
- javascript - 适用于 JavaScript 的 HERE Maps API 不适用于 IE11
- node.js - DynamoDb:如何根据具有最高编号的列获取项目?
- python - 如何创建具有特定 dtype 的新 Pandas 列?