给出以下函数:
public void foo(Connection conn)
{
PreparedStatement statement = conn.prepareStatement("Select a from table");
statement.execute();
}
使用在其他地方实例化的 Connection
对象(无论是应用程序的外部还是内部并不重要)。允许应用程序 API 中的函数接受未经验证的连接
是否会引发任何安全问题?例如,未经验证的连接是否可以欺骗我的应用程序运行恶意查询?
最佳答案
是的,Connection
对象有可能运行恶意查询。
并且:不,我不知道如何防止这种情况,因为执行查询的代码需要Connection
(或DataSource
)。
使用了某种类型,例如用于连接池。从连接池中,您可以获得一个 Connection
对象,例如open()
和 close()
方法无法按预期工作(因为池希望在需要时关闭连接)。因此连接池也可以重写其他方法(因为 Connection
只是一个接口(interface))。
关于java - 将 Java 连接传递给多个公共(public)函数的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17947128/