مرجع تخصصی برنامه نویسان

بزرگترین انجمن برنامه نویسان فارسی زبان

تشخیص تغییرات

دوشنبه, 05 فروردین 1398 11:22

تشخیص تغییرات

سلام

تو مجوز افتا برای لاگ گیری نوشته تشخیص تغییرات غیر مجاز در بانک

پرسیدم گفتن یعنی اگه تو بانک تغییر از طرف کاربر غیر مجاز صورت گرفته باید ثبت بشه و اعلام بشه به مدیر بانک و گفتن راه حلش گرفتن Hash فیل ها و جداول و بانک تو بازه زمانی مشخصه

مشکلم اینه از کجا بفهمم تغییر از طرف کاربر غیر مجاز بوده؟؟؟؟

کد های زیر رو استفاده کردم ولی همه تغییرات رو به اعلام میکنن

SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM TestTable WITH (NOLOCK);

set nocount on
IF OBJECT_ID('dbo.TestTable', 'U') IS NOT NULL 
  DROP TABLE dbo.TestTable; 
Create table dbo.TestTable (Id int, Col1 varchar(10), Col2 varchar(10), Col3 varchar(10))

insert into dbo.TestTable (Id, Col1, col2, col3) values(1,'one','one','one')
insert into dbo.TestTable (Id, Col1, col2, col3) values(1,'two','two','two')
go
create TRIGGER dbo.AfterUpdateTrigger ON dbo.TestTable
AFTER UPDATE
AS
BEGIN
    SET NOCOUNT ON;

    SELECT * INTO #deleted FROM deleted
    SELECT * INTO #inserted FROM inserted

    ALTER TABLE #deleted DROP COLUMN col2
    ALTER TABLE #inserted DROP COLUMN col2

    select * from #deleted
    except 
    select * from #inserted

END
GO

update dbo.TestTable set col2 = '99'
update dbo.TestTable set Col1 = '110'

IF OBJECT_ID('CheckSumTest', 'U') IS NOT NULL DROP TABLE CheckSumTest
GO
CREATE TABLE CheckSumTest
(
 id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
 vc1 varchar(1) NOT NULL,
 vc2 varchar(1) NOT NULL,
 chksum1 AS (CHECKSUM(id, vc1, vc2)),
 chksum2 AS (BINARY_CHECKSUM(id, vc1, vc2))
)
GO
INSERT dbo.CheckSumTest (vc1, vc2) SELECT 'a', 'b'
INSERT dbo.CheckSumTest (vc1, vc2) SELECT 'b', 'a'
GO
--Show Computed Columns and CheckSum_Agg() value = 199555
SELECT * FROM CheckSumTest 
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM CheckSumTest
--Make a Simple (Single row) Update
UPDATE dbo.CheckSumTest SET vc1='c', vc2='a' WHERE id=1
--Show Computed Columns and CheckSum_Agg() value = 204816 (Ok)
SELECT * FROM CheckSumTest 
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM CheckSumTest
--Make a Symmetric change
UPDATE dbo.CheckSumTest SET vc1='b', vc2='a' WHERE id=1
UPDATE dbo.CheckSumTest SET vc1='c', vc2='a' WHERE id=2
--Show Computed Columns and CheckSum_Agg() value = 204816 (Not Ok!)
SELECT * FROM CheckSumTest 
SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM CheckSumTest

 لطفا راه حل های غیر اینا باشه ممنون

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید