2016-12-17 29 views
1

我有一个容器类,只有servlet部分和数据访问层是一个与我的数据库进行交互并提供查询参数结果的层。如何在java中知道我的类和方法的调用者?

我有我的数据访问层类和方法公开,以便任何人都可以读取存储在数据库中的内容,相信只有正确的人才能访问它。

通常,数据库的读取/写入发生在验证完成后(即;授权完成)。这个用户对数据的授权是在我的容器层(比如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 
    } 
} 

现在我最大的噩梦是,如果有人读什么/因为我的数据访问层中的所有类和方法都是“公共”,所以未经授权将数据写入我的数据库。我该如何克服这一点?

即,如何确保某人在进行授权后访问数据访问层上的类和方法?

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

+0

您可以使用Thread.currentThread()。getStackTrace()知道调用了哪些方法。否则,只需将字段“已验证” –

+0

“已验证” - >我无法获取您@ElMarce – lsof

+0

是的,一个简单的标志,告诉您用户已获得授权。其他的事情是保持数据加密并将密码传递给数据访问层来解密数据。 –

回答

1

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

顺便说一句,以下几点来我的心,如果你需要它无论如何: -

  • 进样AuthorazationDataStoreImpl构造对象,并对其进行验证。如果无效,请抛出适当的异常。 “El Marce”在评论中已经提出了使用标志变量的类似解决方案。
  • 在您的DAL上实施许可或锁定。保护您的应用程序和DAL免受不正当使用(有人不正当地复制您的DAL dll并编写自己的代码来调用方法)和逆向工程是另一个话题;我不会在这里讨论它。
  • 对数据库中的数据进行加密(再次按照“El Marce”的建议)并不适合我,因为它不会处理INSERT,UPDATE,DELETE个案。
  • 在类和方法上放置最小访问说明符。如果您可以将数据访问层代码移动到BLL层,则可以将类标记为internal(这是C#,不确定它在Java中的等效性),它将为您的方法添加保护。
相关问题