Oracle審計功能介紹_第1頁
Oracle審計功能介紹_第2頁
Oracle審計功能介紹_第3頁
Oracle審計功能介紹_第4頁
Oracle審計功能介紹_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

Oracle審計功能

一、審計分類:

Oracle中審計總體上可分為“標準審計〃和“細粒度審計〃后者也稱為“基于政策的審計〃,

在OraclelOG之后功能得到很大增強。其中標準審計可分為用戶級審計和系統(tǒng)級審計。用戶級審計

是任何Oracle用戶可設(shè)置的審計,主要是用戶針對自己創(chuàng)立的數(shù)據(jù)庫表或視圖進行審計,記錄所

有用戶對這些表或視圖的一切成功和(或)不成功的訪問要求以及各種類型的SQL操作。系統(tǒng)級審計

只能±1DBA設(shè)置,用以監(jiān)測成功或失敗的登錄要求、監(jiān)測GRANT和REVOKE操作以及其他數(shù)據(jù)庫級

權(quán)限下的操作。

二、標準審計:

2.1分類:

在ORACLE中分別支持以下三種標準審計類型:

語句審計,對某種類型的SQL語句審計,不指定結(jié)構(gòu)或?qū)ο蟆?/p>

特權(quán)審計,對執(zhí)行相應(yīng)動作的系統(tǒng)特權(quán)的使用審計。

對象審計,對一特殊模式對象上的指定語句的審計。

這三種標準審計類型分別定如下3方面進行審計:

審計語句的成功執(zhí)行、不成功執(zhí)行,或者其兩者。

對每一用戶會話審計語句執(zhí)行一次或者時語句每次執(zhí)行審計一次。

對全部用戶或指定用戶的活動的審計。

當數(shù)據(jù)庫的審計功能翻開后,在語句執(zhí)行階段產(chǎn)生審計記錄。審計記錄包含有審計的操作、用戶執(zhí)行的

操作、操作的日期和時間等信息。審計記錄可存在數(shù)據(jù)字典表(稱為審計記錄)或操作系統(tǒng)審計記錄中。數(shù)

據(jù)庫官計記錄是在SYS模式的ALD$表中。

2.2設(shè)置ORACLE標準審計:

以下步驟可以設(shè)置ORACLE的標準審計功能:

1.修改初始化參數(shù)文件(init<sid>.ora)

如果使用效勞器參數(shù)文件使用altersystemset<parameter>=<value>scope=sp,詳情參照LI節(jié)中關(guān)于參數(shù)

文件的介紹),設(shè)置AUDIT_TRA1L參數(shù),并且重啟數(shù)據(jù)庫。AUDIT_TRAIL的取值如下:

DB/TRUE:啟動審計功能,并且把審計結(jié)果存放在數(shù)據(jù)庫的SYS.AUD$表中

OS:啟動審計功能,并把審計結(jié)果存放在操作系統(tǒng)的審計信息中

DB.EXTENDED:具有DB/TRUE的功能,另外填寫人皿$的SQLBIND和SQLTEXT字段

NONE/FALSE:關(guān)閉審計功能

2,設(shè)置AUDIT_TRAIL參數(shù):

如果設(shè)置AUDIT_TRAIL=OS,還需要修改參數(shù)AUDIT_。

如果操作系統(tǒng)支持設(shè)置AUDIT_TRAIL=OS,文件會自動存放在AUDIT.FILE

_DEST所指定的目錄下,并且文件名包含進程的PID。

比方:

AUDIT_=$ORACLE_HOME/rdbms/audit

$Is-1$ORACLE_HOME/rdbms/audit

-rw-rw----1ora92dba881Mar1709:57ora」3264.aud

$ps-ef|grep13264

ora921326413235009:56:43?0:00oracleV92(DESCRIPTION=(LOCAL=Y)

SQL>selectspid,program,usernamefromv$process;

SPIDPROGRAMUSERNAME

13264oracle@frhpll(TNSV1-V3)ora92

3,確認審計相關(guān)的表是否巳經(jīng)安裝

SQLPLUS>connect/ASSYSDBA

SQLPLUS>select*fromsys.aud$;一沒有記錄返回

SQLPLUS>select*fromdba_audit_trail;一沒有記錄返回

如果做上述查詢的時候發(fā)現(xiàn)表不存在,說明審計相關(guān)的表還沒有安裝,需要安裝。

SQLPLUS>connect/assysdba

SQLPLUS>@$ORACLE_HOME/rdbms/admin/cataudit.sql

審計表安裝在SYSTEM表空間。所以要確保SYSTEM表空間又足夠的空間存放審計信息。

4.關(guān)閉并重啟數(shù)據(jù)庫

5.設(shè)置所需要的審計信息

下面是一個例子

SQL>connectsystem/manager

SQL>grantauditsystemtoscott;

SQL>connectscott/tiger

SQL>auditsession;

停止審計:

SQL>noauditsession;

通常設(shè)置了標準審計后都是通過Audit語句開啟審計,使用noaudit語句收回審計。如下所示:

對修改SC表結(jié)構(gòu)或數(shù)據(jù)的操作進行審計可使用如下語句:

AUDIEALTER,UPDATEONSC;

取消對SC表的一切審計可使用如下語句:

NOAUDITALLONSC;

2.3設(shè)置審計的實例(對試圖嘗試口令的訪問的審計):

以下是一個審計的實例,用于記錄嘗試通過野蠻嘗試法破譯ORACLE帳號口令的例子:

1.修改審計相關(guān)參數(shù)(參照上面介紹的方法)

2.重啟數(shù)據(jù)庫

3.設(shè)置審計信息

SQL>AUDITALLBYACCESSWHENEVERNOTSUCCESSFUL

4.查詢AUD$

SQL>selectreturncode,action#,userid,userhost,terminal,timestamp

fromaud$

RETURNCODEACTION#USERIDUSERHOSTTERMINAL

1017100SCOTTWPRATA-BR

1017100SCOTTWPRATA-BR

1017100SCOTTWPRATA-BR

ORA-1017的含義為錯誤的用戶名口令。通過查看AUD$表可以清楚地看到WPRATA-BR嘗試破譯SCOTT的口令。

可以通過下面一個存儲過程來分析AUD$表,找出可疑的信息:

createorreplaceprocedureAuditLogin(SinceVarchar2,TimesPLS_Integer)

is

USER_IDVARCHAR2(20);

cursorclisSPIpct.nsprid,count(?)frnmsys.and$whararatiirnccda='1017'and

timestamp#>=to_date(Since,'yyyy-nm-dd*)

groupbyuserid;

cursorC2ISSelectuserhost,terminal,TO_CHAR(timestamptt,rYYYY-MM-DD:HH24:MI:SS')

fromsys.aud$WHEREreturncode='1017*andtimestamp#>=to_date(Since,'yyyy-mm-ddr)AND

USERID=USER_ID;

ctPLS_INTEGER;

V_USERHOSTVARCHAR2(40);

V_TERMINALVARCHAR(40);

V.DATEVARCHAR2(40);

BEGIN

OPENCl;

dbms_output.enable(1024000);

LOOP

FETCHClINTOUSER_ID,CT;

EXITWHENC1%NOTFOUND;

IF(CT>=TIMES)THEN

DBMS_OUTPUT.PUT_LINE(1USERBROKENALARM:”|USER_ID);

OPENC2;

LOOP

FETCHC2INTOV_USERhOST,V_TERMINAL,V_DATE;

1r

DBMS_OUTPUT.PUT_LINE(CHR(9)|||HOST:'||V_USERHOST||.TERM:'||V_TERMINAL||'tTIME:||V_DATE);

EXITWHENC2%NOTFOUND;

ENDLOOP;

closec2;

ENDIF;

ENDLOOP;

closecl;

END;

/

一下是執(zhí)行結(jié)果:

SQL>setserveroutputon;

SQL>executeauditloginC2004-01-01',2);

USERBROKENALARM:SYS

HOST:.TERM:XUJI,TIME:2004-09-22:11:08:00

HOST:,TERM:XUJI.TIME:2004-09-22:11:08:01

HOST:,TERM:XUJI.TIME:2004-09-22:ll:09:29

HOST:,TERM:XUJLTIME:2004-09-22:U:09:29

PL/SQL過程已成功完成。

2.4將審計相關(guān)的表移動到其他表空間:

由于AUD$表等審計相關(guān)的表存放在SYSTEM表空間,因此為了不影響系統(tǒng)的性能,保護SYSTEM表空間,最好把A

叩$移動到其他的表空間上??梢允褂孟旅娴恼Z句來進行移動:

sql>connect/assysdba;

sql>altertableaud$movetablespace<newtablespace>;

sql>altarindpxT_and1rAhuiIdnnlinptahlAspactA〈nawt.ablAspacA>;

SQL>altertableaudit$movetablespace<newtablespace>;

SQL>alterindexi_auditrebuildonlinetablespace<newtablespace>;

SQL>altertableaudit_actionsmovetablespace<newtablespace);

SQL>alterindexi_audit_actionsrebuildonlinetablespace<newtablespace>;

三、細粒度審計:

細粒度審計(FGA)(通過0racle9/引入)可以理解為“基于政策的審計〃。與標準的審計功

能相反,F(xiàn)GA可用于指定生成審計記錄必需的條件:

FGA政策通過使用“dbms_fga〃程序包以編程方式綁定到對象(表、視圖)。類似于用于通過VPD

("dbms_rls")進行訪問庭制的程序包,它允許您創(chuàng)立任何需要的條件,例如:僅當以下條件為真

時審計事件:

?在早上九點到下午六點之間或在星期六和星期日對某個表進行了訪問。

?使用了公司網(wǎng)絡(luò)外部的某個IP地址。

?選定或更新了特定列。

?使用了該列的特定值。

這將創(chuàng)立更有意義的審計線索,因為無需記錄每一個人對表的每一次訪問。從Oracle數(shù)據(jù)庫10g

開始,F(xiàn)GA支持在一個策略中使用“選擇〃、”插入〃、”更新〃和"刪除〃語句的任意組合。事

實上,綁定到表的FGA政策簡化了審計政策的管理,因為這將只需在數(shù)據(jù)庫中對其更改一次,不

用在每個應(yīng)用程序中一次次進行。此外。無論用戶通過何種方式連接至數(shù)據(jù)庫(通過應(yīng)用程序、Mb

接口或通過SQL*Plus),其操作都會記錄下來。

3.1使用細粒度審計:

L創(chuàng)立測試表:

createtableACCOUNT

(AACT_NOnumbernotnul1,

CUST_IDnumbernotnull,

BALANCEnumber(15,2)

):

2、添加審計謀略:

begin

[)BMS_FGA,I)ROP_POLICY(object_schema=>'TEST',

object_nair.e=>'ACCOUNT',

policy_nane=>'ACCOUNT_ACCESS');

end;

這段代碼必須由具有執(zhí)行程序包dbms.fga權(quán)限的用戶來執(zhí)行。建議應(yīng)該建立一個專門的用戶

來專門負責添加審計謀略。該過程有許多參數(shù),具體含義如下:

OBJECTSCHEMA對其定義?FGA策略的表或視圖的所有者

OBJECT_NAME表或視圖的名稱

POLICY_NAME策略的名稱,由用戶自定義一例如,ACCOUNTS_ACCESS

POLICY_TEXT在添加策略時指定的審計條件一例如,BALANCE>=11000

POLICY_COLUMN審計列—例如,BALANCE

ENABLED如果啟用則為YES,否則為N0

PF_SCHEMA擁有策略處理器模塊的模式(如果存在)

PF_PACKAGE處理器模塊的程序包名稱(如果存在)

PF.FUNCTION處理器模塊的過程名稱(如果存在)

3、在定義了策略以后,當用戶以通常的方式對表進行查詢時,如下所示:

select*frombank,accounts;

審計愛索記錄此操作。可以使用以下語句查看線索:

selecttimestamp,

db_user,

os_user,

object_schema,

object_name,

sql_text

fromdbafgaaudittrail;

TIMESTAMPDB_USEROS.USEROBJECTOBJECTNSQL_TEX7

26-MAR-10TESTanandaTESTACCOUNTselect*fromaccount

注意名為DBA_FGA_AUD1T_TRA1L的新視圖,它記錄細粒度的訪問信息。其中顯示了審計事件

的時間標記、查詢著的薪據(jù)庫房戶ID、操作系統(tǒng)用戶ID、查詢中所使用表的名稱和所有者,最后

還有瑜切的查詢語句。

32審計歹和審計條件?

默認情況下會對被審計對象的所有列開啟審計,當任何一列被訪問時都會紀錄一條審計信息,

這在現(xiàn)實情況下不太常見,因為這樣會使審計信息表增長過快造成存儲空間的壓力,因此通常都會

設(shè)置審計條件,當條件觸發(fā)時再發(fā)起審計。例如我們可以對Account表的Balance列諛置審計條件,

當訪問該列并觸發(fā)審計條件時才進行審計。如下所示:

begin

dbms_fga.add_policy(

object_schema=>,TEST,,

object_name=>*ACCOUNT,,

policy_name=>'ACCOUNT_ACCESS',

audit_column=>1BALANCE1,

audit_condition=>1BALANCE>=11000,

);

end;

該策略將在訪問BALANCE列并且只有訪問列值大于等于11000時才發(fā)起審計。因此根據(jù)該條件戶有

如下不同審計狀態(tài):

SQL語句審計狀態(tài)

進行審計。用戶選擇了在添加策略時所指定的審計列

selectbalancefromaccount;

BALANCEo

進行審計。即使用戶沒有明確指定列BALANCE,*也隱

select*fromaccount;

含地選擇了它。

selectcust_idfromaccountwhere進行審計。即使用戶沒有明確指定列BALANCE,where子

balance<10000;句也隱含地選擇了它。

selectcust_idfromaccount;不進行審計。用戶沒有選擇列BALANCEo

selectcount(*)fromaccount;不進行審計。用戶沒有明確或隱含地選擇列BALANCEo

3.3優(yōu)化器模式:

FGA需要基于本錢的優(yōu)化(CBO),以便正確地工作。在基于規(guī)則的優(yōu)化時,只要用戶從表中進

行選擇,無論是否選擇了相關(guān)的列,都始終生成審計線索,增加了誤導(dǎo)工程出現(xiàn)的可能性。為使FGA

正確地工作,除了在實例級啟用CBO之外,在SQL語句中應(yīng)該沒有規(guī)則暗示(hint),并且必須

至少使用評估選項對查詢中的所有表進行分析。

34管理FGA策略:

要刪除策略,您可以使用以下語句:

begin

dbms_fga.drop_policy(

object_schema=>*TEST*,

object_name=>rACCOUNT',

policy_name=>rACCOUNT_ACCESS'

);

end;

對于更改策略而言,沒有隨取隨用的解決方案。要更改策咚中的任何參數(shù),必須刪除策略,再使用

更改后的參數(shù)添加策略。但是可以暫時禁用已有策略,如下所示:

begin

dbms_fga.enable_policy(

object_schema=>'TEST',

object_name=>rACCOUNT',

policy_name=>rACCOUNT.ACCESS1,

pnahlA=>FALSE

);

end;

若要重新啟用它,可使用同一函數(shù),只需將參數(shù)enable設(shè)置為TRUE。

3.5FGA數(shù)據(jù)字典視圖:

FGA策略的定義位于數(shù)據(jù)字典視圖DBA_AUDTT_POLTCTES中。該市途中各列含義如下:

SESSION_TD審計會話標識符;與V$SESSION視圖中的會話標識符不同

TIMESTAMP審計記錄生成時的時間標記

DBJJSER發(fā)出查詢的數(shù)據(jù)庫用戶

OS.USER操作系統(tǒng)用戶

USERHOST用戶連接的機器的主機名

CLIENT.ID客戶標識符(如果由對打包過程dbms_session.set_identifier的調(diào)用所設(shè)置)

EXT_NAME外部認證的客戶名稱,如LDAP用戶

OBJECT_SCHEMA對該表的訪問觸發(fā)了審計的表所有者

OBJECTNAME對該表的SELECT操作觸發(fā)了審計的表名稱

觸發(fā)審計的策略名稱(如果對表定義了多個策略,則每個策略將插入一條記錄。

POLICY.NAME

在此情況下,該列顯示哪些行是由哪個策略插入的。)

SCN記錄了審計的Oracle系統(tǒng)更改號

SQL_TEXT由用戶提交的SQL語句

SQLBIND由SQL語句使用的綁定變量(如果存在)

3.6視圖和FGA:

假定在ACCOUNTS表上定義視圖VW_ACCOUNT如下:

createviewvwaccountasselect*fromaccount;

現(xiàn)在,如果用戶從視圖中而不是從表中進行選擇:

select*fromvw_account;

您將看到以下審計線索:

selectobject_name,sql_textfromdba_fga_audit_trail;

OBJECT_NAMESQL_TEXT

ACCOUNTselect*fromvw_account

注意,是基表名稱而不是視圖名稱出現(xiàn)在OBJECT_NAME列中,因為視圖中的選擇是從基表中進行

選擇。但是,SQL_TEXT列記錄了用戶提交的實際語句。

如果只希望審計對視圖的查詢而不是對表的查詢,可以對視圖本身建立策略。通過將視圖名稱

而不是表的名稱傳遞給打包的過程dbms_fga.add_policy中的參數(shù)object_namc,可以完成這項

工作。隨后DBA_FGA_AUDIT_TRAIL中的OBJECT_NAME列將顯示視圖的名稱,并且不會出現(xiàn)有關(guān)表

訪問的附加記錄。

3.7其它用途:

除了記錄對表的選擇訪問,F(xiàn)GA還可用于某些其它情況:

?可以對數(shù)據(jù)倉庫使用FGA,以捕獲特定的表、視圖或物化視圖上發(fā)生的所有語句,這有助于

方案索引。不需要到V$SQL視圖去獲取這些信息。即使SQL語句已經(jīng)超出了V$SQL的期

限,在FGA審計線索中將會始終提供它。

?由于FGA捕獲綁定變量.它可以幫助了解綁定變量值的模式,這有助于設(shè)計直方圖集合等。

?可以向?qū)徲嬚呋駾BA發(fā)送警告,這有助于跟蹤惡意應(yīng)用程序。

由于FGA可以作為SELECT語句的觸發(fā)器,可以在需要這種功能的任何時候使用它。

3.8FGA在10G中的增強:

3.8.1對所有DML的審計:

在9i中FGA只能對Select語句進行審計,而不能對其他DML語句(Update>Delete^Insert)

進行審計,如果想對其他DML語句進行審計那么只能采取數(shù)據(jù)庫處發(fā)起的形式來實現(xiàn)。在10G中實

現(xiàn)了對所有DML語句的審計,如下所示:

begin

dbms_fga.add_policjr(

object_schema=>'TEST,

object_name=>'ACCOUNT,

policyname=>'ACCOUNTACCESS',

audit_column=>'BALANCE',

audit_condition=>'BALANCE>=3000',

statement!ypes=>'INSERT,UPDATE,DELETE,SELECT'

);

end;

通過statement_types=>'INSERT,UPDATE,DELETE,SELECT參數(shù)制定了新的策略,該策略可以對Select之外的

所有EML操作進行審計。因此根據(jù)新的審計條件和審計謀略會有如下不同情況:

第1種情況

之前:BALANCE=1000

用戶發(fā)出:

updateaccountsetbalance=1200whereACCOL'NT_NO=....

舊的和新的balance都小于3,000,審計條件不滿足;因此這條語句將不會被審計。

第2種情況

之前:BALANCE=1000

用戶發(fā)出:

updateaccountsetbalance=3200whereACCOUNT_NO=....

新的balance大于3,000,審計條件滿足;因此這條語句將會被審計。

第3種情況

之前:BALANCE=3200

用戶發(fā)出:

updateaccountsetbalance=1200whereACCOUNTING=....

新的balance小于3,000,但舊的balance大于3,000。因此審計條件滿足,這條語句將被審計。

第4種情況

用戶插入一行,其中有BALANCE<3000o

insertintoaccountvalues(9999,1200,‘X’);

因為balance1,200不滿足審計條件,所以這條語句不被審計。如果balance列大于或等于

3,000,它將被審計。

第5種情況

用戶插入一行,其中balance的值為空。

insertintoaccount(account_no,status)values(9997,,X*);

因為balance為空,該列沒有任何默認值,所以審計條件不滿足(比較NULL>=3000結(jié)果為

FALSE),這條語句不會被審計。重要重點事項:假設(shè)該列有一個大于3,000的默認值時,這條

語句仍然不會被審計,即使插入行的balance列值大于3000o注意對于DML語句的審計是由一

個自動事務(wù)插入的;即使回滾DML語句的操作,審計記錄也將存在不會跟著回滾。

3.8.2制定相關(guān)的列策略:

在表ACCOUNT上定義的一個策略,如下:

begin

dbms_fga.add_polic5^(

object_schema=>'TEST',

objectname=>rACCOUNT\

policy_name=>rACCOUNT_SEL',

auditcolumn=>rACCOUNT_NO,BALANCE,,

audi"condition=>rBALANCE>=3000',

statcment_typcs=>'SELECT'

);

end;

在某些情況下,列的組合可能很重要,而不是某個特定的列。以上策略是在ACC0UNT_N0和BALANCE

上定義的。那么如果用戶發(fā)出以下語句:

selectbalancefromaccountswhereaccount_no=9995;

這條語句將被審計,因為balance列被選中,且余額為3,200,大于3,000,滿足審計條件。

如果一個用戶想查出在銀行的總余額,他發(fā)出:

selectsum(balance)fromaccount;

這條查詢幾乎沒什么害處;它不明確指出帳戶所有者和帳戶余額。因此平安策略可能不會要求審計

這條查詢。不過,這條查詢

selectbalancefromaccountwhereaccountno=9995

必須被審計;因為它明確地指定了一個帳戶。默認地,所有語句都被審計(無論使用了什么樣的列

組合)。這將創(chuàng)立大量不需要的審計線索工程,并可能帶天一些空間限制問題。為了限制它們,您

可以指定僅當在查詢中使用了希望的列組合時才開始審計。當定義策略時,您可以使用一個新的參

數(shù):

audit_co1umn_opts=>DBMS_FGA.ALL_COLUMNS

這個參數(shù)將使策略僅當列ACCOUNT_NO和BALANCE在查詢中都被訪問時才創(chuàng)立審計設(shè)索工程。例

如,以下查詢將產(chǎn)生一個審計線索工程。

selectaccount_no,balancefromaccount;

但這條查詢不會產(chǎn)生審計線索工程。

selectaccount_nofromaccount;

使用這個參數(shù)將把審計的數(shù)量限制在一個更易管理的大小。如果希望采用默認的行為一即任意列

被選中時都進行審計,那么您可以對同一參數(shù)的使用不同值。

audit_column_opts=>DBMS_FGA.ANY_COLUMNS

3.8.3與標準審計的結(jié)合:

通過制定如下審計謀略實現(xiàn)標準審計與細粒度審計的結(jié)合

begin

dbms_fga.add_policy(

objectschema=>'TEST',

object_name=>'ACCOUNT',

policy_name=>,ACCOUNT_SEL,,

audit_column=>'ACCOUNT_NO,BALANCE1,

audit_condition=>'BALANCE>=3000\

statementtypes=>'SELECT1,

audit_column_opts=>DBMS_FGA.ALL_COLUMNS,

audittrail=>DB

);

end;

通過指定audit_trail=>DB參數(shù)實現(xiàn)在細粒度審計時開啟標準審計。在Oracl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論