0

给定以下功能:

public void foo(Connection conn)  
{  
    PreparedStatement statement = conn.prepareStatement("Select a from table");  
    statement.execute();
}  

使用在Connection其他地方实例化的对象(无论是应用程序的外部还是内部都无关紧要)。允许应用程序的 API 中的函数接受未验证的函数是否会出现任何安全问题Connection?例如,未经验证的连接会诱使我的应用程序运行恶意查询吗?

4

2 回答 2

1

是的,Connection对象可能会运行恶意查询。

并且:不,我不知道有什么方法可以防止这种情况发生,因为执行查询的代码需要Connection(或 a )。DataSource

其中的某种类型用于例如连接池。从连接池中,您会得到一个Connection对象,例如open()andclose()方法无法按预期工作(因为池希望在需要时关闭连接)。因此,连接池也可以覆盖其他方法(Connection仅作为接口)。

于 2013-07-30T12:41:39.317 回答
1

如果您考虑一下,注入该 Connection 对象的任何内容都已经引用了该 Connection 对象。无论有没有你的代码,它都可以自行运行恶意查询。

于 2013-07-30T12:44:17.433 回答