gpt4 book ai didi

java - 如何限制动态查询只接受 select 语句?

转载 作者:行者123 更新时间:2023-11-30 08:08:33 25 4
gpt4 key购买 nike

目前,我允许管理员用户通过使用此方法提供动态查询来查询数据库:

public DataSet executeRawQuery(final String q) {
JdbcDataSet dataSet = jdbcTpl.execute(q, new DataSetBuildingCallback(settingsProvider));
return dataSet;
}

但是,我希望允许他们仅使用 select 语句并阻止表删除、删除等语句。我该怎么做?

SQL 语句可能非常复杂,因此我不想检查字符串中的关键字。是否有Spring内置功能可以帮助我解决这个问题?

最佳答案

正如我所评论的,不需要检查输入字符串,只需让数据库本身处理安全性并使用允许select语句的数据库连接。

为此,首先创建一个数据库用户并仅授予select:

CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT SELECT on schema.table TO username;

然后在获取 JDBC 连接时使用上面创建的用户名/密码。如果应用程序的其他部分需要插入/删除/更新,那么它们可以使用另一个连接。

关于java - 如何限制动态查询只接受 select 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732478/

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