MSSQL数据库虽然能为开发者提供便捷的开发流程,但是,在内容安全的审查方面,开发者仍然需要 specifically注意安全的删除操作。这里就来介绍 MSSQL 数据库安全删除的指导方法,希望能对开发者有所帮助。
1、将涉密数据更新为所有者授予的非敏感信息
在数据库安全删除之前,可能进行一些更新操作,将其涉及到的用户敏感信息更新为某些非敏感信息,这样即使将其删除这也不会造成任何安全威胁。比如用一些规则来隐藏某些敏感字段,比如:
• 将电话号码替换为“000-000-0000”
• overwrite 密码为“PASSWORD”
• 把数字替换成单词’zero’
• 生成固定的文本值
下面是一个针对客户表的 update 语句示例:
UPDATE Customer
SET Phone1 = '000-000-0000',
Phone2 = '000-000-0000',
EmailAddress = 'example@examplemail.com',
Password = 'PASSWORD',
[...]
WHERE CustomerID = 100
2、执行精确的删除
更新操作完成之后,可以采用 MSSQL 提供的 delete 语句来执行精确的删除,以下是一个示例:
DELETE FROM Customer
WHERE CustomerID = 100
此外,还可以使用 truncate 语句来删除 update 更新后的所有数据,以下是一个示例:
TRUNCATE TABLE Customer
3、使用触发器保护更新数据
有些用户敏感信息在被删除前,被更新为不可恢复的值的时候,我们也可以使用某些可信技术来保护更新的数据,比如触发器。
数据库中所有涉及安全的更新语句都可以被触发器拦截,触发器会监督和检查要被 update 的数据,并 header header根据一些特定的条件决定是否执行 update,以下是一个触发器示例:
CREATE TRIGGER tr_protectUpdate
ON dbo.TableName
AFTER UPDATE
AS
BEGIN
IF UPDATE (field1)
BEGIN
if updated.field1
begin
ROLLBACK TRANSACTION
RAISERROR('field1必须大于等于0', 16, 1)
end
END
END
4、加入日志机制
最后,可以使用 MSSQL 的 logon 机制来进行检查和记录,这可以使开发者及时地发现一些潜在的安全事件,以下是一个示例:
CREATE TRIGGER tr_logon
ON dbo.TableName
AFTER UPDATE
AS
BEGIN
INSERT into logTableName (user_name,operation,date)
VALUES (SUSER_SNAME(),'field1 is updated',GETDATE())
END
总结
以上就是 MSSQL 数据库安全删除的指南,希望能对开发者一定程度上保障安全性。包括:将涉及到的信息更新为所有者授予的非敏感信息;使用精准的 delete 语句和 truncate 语句删除;使用触发器保护更新数据;加入日志机制。