【问题标题】:How to prevent DDL, DCL, TCL commands in Oracle QueryOracle Query中如何防止DDL、DCL、TCL命令
【发布时间】:2014-12-03 12:52:26
【问题描述】:

大家好,

我正在开发一个应用程序以在 ORACLE 中从 ASP.NET 执行 SQL 查询,我想获取所有 DDL、DCL、TCL 保留字的列表以防止更改数据库。

也许,¿oracle 中有一个带有这个列表的数据库表?比如 v_$reserved_words。

非常感谢你们的帮助,解决方案必须是正确的,因为我使用具有所有权限的通用用户连接到数据库,而我的公司不允许我更改它。

【问题讨论】:

  • 反过来做:维护一个允许语句的列表——这个列表会短得多。顺便说一句:确实有一个V$RESERVED_WORDS 视图,但它不会帮助你,因为它不会告诉你这个保留字属于哪种声明。
  • 我建议,您应该通过仅授予使用应用程序所需的权限来控制用户可以执行的操作,而不是检查某些语句。如果他们没有能力执行 ALTER TABLE 语句,那么该语句将失败。这更典型,也更容易。
  • 您好,感谢您的帮助,但我如何才能获得此允许的语句?真的,有没有办法知道限制词? :S
  • 这不是保护系统的方式。您应该允许调用者发送他们喜欢的任何 SQL; Oracle 中的权限系统是专门设计的 来阻止他们做任何你不希望他们做的事情。不要试图重写轮子。
  • 是否允许 DML(INSERTUPDATEMERGE 等)和匿名 PL/SQL 块(begin null; end;)?

标签: oracle ddl reserved-words dml


【解决方案1】:

只需创建一个新用户并给他连接角色,然后选择表的权限,允许他查看的视图。

create user test identified by notagoodpassword;

grant connect to test;

grant select on schema.table to test;

编辑:如果您希望用户调用您需要的程序/功能

grant execute on schema.procedure to test;

【讨论】:

  • 嗨,这个例子对我很有帮助,记住如果你试图执行程序来获取信息,你也需要执行权限,但是谢谢这真的很有帮助。
  • 我将其添加到答案中。
猜你喜欢
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
相关资源
最近更新 更多