【发布时间】:2011-08-05 23:09:44
【问题描述】:
我们有一个 Web 应用程序 (Grails),我们将根据用户数量销售其许可证。数据库(Oracle 10g)中有一个保存用户的表。客户将拥有自己的软件和数据库副本。有人可以建议限制用户表中允许存在的记录数量的策略,这种方式不能被客户合理地颠覆吗?谢谢。
【问题讨论】:
标签: oracle grails licensing oracle10g
我们有一个 Web 应用程序 (Grails),我们将根据用户数量销售其许可证。数据库(Oracle 10g)中有一个保存用户的表。客户将拥有自己的软件和数据库副本。有人可以建议限制用户表中允许存在的记录数量的策略,这种方式不能被客户合理地颠覆吗?谢谢。
【问题讨论】:
标签: oracle grails licensing oracle10g
您至少应该考虑在这里避免所有技术手段,而是坚持让您的客户签署带有审计条款的 SLSA,然后在这里和那里进行审计。
所有这些技术手段都会带来失败的风险,从彻底崩溃到神秘的性能问题。越隐蔽和狡猾,虫子就越隐蔽和狡猾。
【讨论】:
这取决于您对“合理”的定义。如果他们托管数据库,他们将始终能够允许更多行。
DBMS_SCHEDULER 或 DBMS_JOB),查找语句和 DDL 触发器,如果它们丢失,则重新创建它们。攻击者可能会发现有一个数据库作业正在重新创建对象并删除该作业,然后删除 DDL 触发器,然后删除语句触发器。在这项工作中,您可能会向您发送通知(通过电子邮件或 http 或其他方式)提醒您注意该问题,尽管从网络的角度来看这可能很棘手——您客户的防火墙可能不允许来自数据库的出站 HTTP 请求服务器返回到您的服务器。【讨论】:
如果客户无权修改表定义,您可以对表使用一组简单的约束:
CREATE TABLE user_table
(id NUMBER PRIMARY KEY
,name VARCHAR2(100) NOT NULL
,rn NUMBER NOT NULL
,CONSTRAINT rn_check CHECK (rn = TRUNC(rn) AND rn BETWEEN 1 AND 30)
,CONSTRAINT rn_uk UNIQUE (rn)
);
现在,列 rn 必须取 1 到 30 之间的整数值,并且不允许重复:因此,最多可以添加 30 行。
【讨论】: