【发布时间】:2017-08-11 08:09:05
【问题描述】:
我有一个查询,例如select username as test , userpassword as testing, concat(userpassword,username), concat(userpassword,username) as test1 from mytable
上述查询的结果将是相应的列详细信息。此查询由用户在我们的 Web 应用程序中作为输入给出,我们通过显示 ******* 来限制某些列的显示,例如 userpassword。
但是在上面的查询中,由于我们的列使用别名和 concat 函数,我们的密码被显示出来了。
我想要一个显示******* 代替别名列名的代码,即即使名称更改后,它也应该只显示为*******。
有什么方法可以限制as 查询和concat 查询仅用于我们希望显示为******* 的列。
【问题讨论】:
-
限制来自 JAVA 的架构级别访问不是一个好主意。您应该只在数据库级别执行此操作。假设用户输入不是 DML,创建一个单独的 db 用户来执行来自用户输入的查询并限制该用户的访问。您可能希望创建可用于查询用户输入而不是架构的公共视图。不要在公共视图中包含您希望对用户输入查询隐藏的此类列。
-
您使用的是 MySQL、MS SQL Server 还是 Oracle?不要标记未涉及的产品。
-
对不起。我正在使用 mssql。
标签: java mysql sql sql-server oracle