gpt4 book ai didi

java - 如何知道java中我的类和方法的调用者?

转载 作者:行者123 更新时间:2023-11-30 06:59:22 26 4
gpt4 key购买 nike

我有一个容器类,除了 servlet 部分之外什么都没有,数据访问层是与我的数据库交互并为查询参数提供结果的层。

我将数据访问层类和方法设置为公共(public),以便任何人都可以读取数据库中存储的内容,并相信只有合适的人才能访问它。

通常对数据库的读/写发生在验证完成后(即授权完成)。用户对数据的授权是在我的容器层(例如 servlet)中执行的,然后我开始向数据库读/写数据。

听起来理论太多了,对吗?这是我的数据访问层的示例片段:

DataStore.java

//This is my interface

public interface DataStore {

public String[] selectData(query params) throws Exception;

public String[] addData(query params) throws Exception;

public String[] editData(query params) throws Exception;

public String[] deleteData(query params) throws Exception;

}

DataStoreImpl.java

//This is my implemetation part of my above interface

public class DataStoreImpl implements DataStore {

public String[] selectData(query params) throws Exception {

//Code implementing select query logic
}

public String[] addData(query params) throws Exception {

//Code implementing insert query logic
}

public String[] editData(query params) throws Exception {

//Code implementing update query logic
}

public String[] deleteData(query params) throws Exception {

//Code implementing delete query logic
}
}

现在我最糟糕的噩梦是,如果有人未经授权在我的数据库中读取/写入数据怎么办,因为我的数据访问层中的所有类和方法都是“公共(public)的”。我该如何克服这个问题?

即,如何确保在进行授权后有人正在通过数据访问层访问我的类和方法?

我如何知道 DataStore 或 DataStoreImpl 中的类和方法的调用者?或者有其他选择吗?

最佳答案

首先,恕我直言,这看起来与数据访问层没有任何关系。看起来您想自己实现代码访问安全性。据我认为,您不应该担心“未经授权的用户调用 DAL 方法”,因为此责任在于 BLL 或应用程序代码。您可以培训您的同事如何使用您的代码。最终用户永远不会访问您的代码,他只会通过您的应用程序与其进行交互。因此,如果应用程序编写正确,就不会出现问题。

顺便说一句,如果您需要的话,我会想到以下几点:-

  • DataStoreImpl 的构造函数中注入(inject) Authorazation 对象并验证它。如果无效,则抛出适当的异常。 “El Marce”已经在评论中提出了使用标志变量的类似解决方案。
  • 对您的 DAL 实现许可或锁定。保护您的应用程序和 DAL 免遭未经授权的使用(有人未经授权地复制您的 DAL dll 并编写自己的代码来调用方法)和逆向工程是另一个主题;我不会在这里讨论它。
  • 对数据库中的数据进行加密(同样由“El Marce”提出)对我来说似乎并不合适,因为它无法处理 INSERT、UPDATE、DELETE 情况。
  • 在类和方法上放置最小访问说明符。如果您可以将数据访问层代码移至 BLL 层,则可以将类标记为内部(这是 C#。不确定 Java 中的等效项是什么),这将为您的方法添加保护。

关于java - 如何知道java中我的类和方法的调用者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41199895/

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