java - 将 Java 连接传递给多个公共(public)函数的安全问题

标签 java sql security

给出以下函数:

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/

相关文章:

java - 具有动态参数的 Struts 嵌套标签

Java,如果数组包含重复值,则返回 true

php - 在每个页面上进行登录检查,但仅弹出登录窗口

java - OWASP Java Encoder Project 会逃避所有 XSS 吗?

十六进制的 PHP SSL 证书序列号

java - 如何正确配置 Spring Security OAuth 2.0 客户端凭据?

Java 如何识别照片颜色?

mysql - 使用函数的 SQL 查询 - 如何获取列表的最大计数

单个查询中的 MySQL 多个计数

java - 使用 group by 在 mysql 中选择计数并在每一行中重复计数