【发布时间】:2013-04-13 20:45:04
【问题描述】:
首先,我知道这个问题已经被问过好几次了,我已经对这个主题做了很多研究,但我似乎无法找到一个明确的答案。我要么在这里遗漏了一些重要的东西,要么这是不可能的,我只是在浪费你的时间。如下:
想象一个数据库,假设它只存储 1000 行,由一个 id、一个必须在某些时候更改的布尔值(0 或 1)和一个包含一些信息的常量字符串值组成。仅当用户在客户端 java 应用程序中提交了所需的操作时,才能访问信息并且可以更改值。只有存在才是重要的。
在我的全球网络搜索过程中,我遇到了两个可以满足我需求的选项。
为每个用户设置数据库本身的权限,并让用户使用自己的用户名和密码从应用程序登录。然后客户端应用程序可以按照用户的意愿与数据库进行通信,根据需要执行读取和写入数据库的任务。
使用三层方法,让 java 应用程序与 PHP 接口通信,该接口执行查询并返回编码的 json 字符串,java 应用程序可以解析该字符串。我了解了基本概念,您将客户端的用户名和密码发送到 PHP 接口,该接口检查客户端是否符合条件并相应地执行查询。没什么大不了的。
我似乎想不通的是如何只让 java 客户端更改和检索数据。例如,如果有人想知道方法 1 中字符串的内容是什么,他们可以简单地使用他们的用户名和密码并直接查询数据库。反编译后,查询很容易从 java 应用程序中获取。至于#2,如果应用程序被反编译,PHP 接口也可以被逆向工程,允许用户通过利用 PHP 脚本来查询数据库,即使不知道数据库的实际密码和用户名。
我必须指出,用户根本不受信任,数据库的内容应该保密,直到在 java 应用程序中满足某些条件。有没有办法做到这一点?如果有一种我不知道的方法,我肯定不会停留在这两个选项上。提前感谢您的所有帮助。
【问题讨论】:
-
“某些条件”是什么意思?是可以远程验证的吗?
-
将其视为一种成就系统,例如客户端完成游戏或获得高分等,很抱歉我不能更具体而不放弃这个想法这一切。我想不出一种无法通过反编译java代码来复制的远程验证方式......
标签: java php mysql security interface