-1

我有一张几行的桌子。这些行只能通过我的应用程序进行修改,即,我需要防止使用客户端(例如 HeidiSQL)进行手动编辑。有可能预防吗?

我可以执行以下操作:

  • 加密数据
  • 加密连接字符串
  • 使用哈希码

但我想知道,是否可以防止手动编辑数据库中的数据?

是否有任何数据库供应商(Oracle、SQL、MySQL)提供这些类型的功能?

4

2 回答 2

4

您可以在您的数据库上设置用户权限。这在您提到的所有 DBmanagers 中都是可能的。

示例:在这种情况下,我将创建 3 种用户权限类型

  1. 具有读/写权限的用户(适用于您的应用程序)
  2. 具有读取权限的用户(普通用户)
  3. 具有读/写 + DBOWNER 权限的管理员用户(用于故障排除、更改/添加列和表...)
于 2013-07-30T12:52:59.557 回答
0

您可以使用登录后触发器来检测客户端并引发异常:

create or replace trigger prevent_sqldeveloper
 after logon on database
declare
  v_program varchar2(48);
  v_sid     number;
  v_serial# number;
begin
  select sid, serial#, program into v_sid, v_serial#, v_program
    from v$session where sid=sys_context('userenv', 'sid');
  if (v_program like 'SQL Developer%') then
    raise_application_error(-20001,
      'You''re not allowed to connect from SQL*Developer');
  end if;
end prevent_sqldeveloper;
/

问候

于 2013-07-30T13:56:10.813 回答