我有一张几行的桌子。这些行只能通过我的应用程序进行修改,即,我需要防止使用客户端(例如 HeidiSQL)进行手动编辑。有可能预防吗?
我可以执行以下操作:
- 加密数据
- 加密连接字符串
- 使用哈希码
但我想知道,是否可以防止手动编辑数据库中的数据?
是否有任何数据库供应商(Oracle、SQL、MySQL)提供这些类型的功能?
我有一张几行的桌子。这些行只能通过我的应用程序进行修改,即,我需要防止使用客户端(例如 HeidiSQL)进行手动编辑。有可能预防吗?
我可以执行以下操作:
但我想知道,是否可以防止手动编辑数据库中的数据?
是否有任何数据库供应商(Oracle、SQL、MySQL)提供这些类型的功能?
您可以在您的数据库上设置用户权限。这在您提到的所有 DBmanagers 中都是可能的。
示例:在这种情况下,我将创建 3 种用户权限类型
您可以使用登录后触发器来检测客户端并引发异常:
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;
/
问候