banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix If-then-else in modsecurity? :D  XML
  [Discussion]   If-then-else in modsecurity? :D 21/12/2010 10:05:53 (+0700) | #1 | 227521
zjm_zjm
Member

[Minus]    0    [Plus]
Joined: 26/07/2009 01:53:09
Messages: 159
Location: hhhhhh
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]
Mình đang đọc modsecurity handbook, tới phần này nhưng không hiểu cho lắm, anh em giải thích hộ tí.
Nguyên văn trong sách.
Code:
If-then-else
You can implement a primitive if-then-else construct if you use skip and SecAction together:
SecRule ARGS K1 id:1,nolog,pass,skip:2
SecRule ARGS K2 id:2,block
SecAction nolog,pass,skip:1
SecRule ARGS K3 id:3,block
The first rule in the example determines which of the two paths will be processed. If it matches,
the skip action is executed to skip to rule 3. However, if it doesn’t match the next rule
(2) will be processed. The unconditional match in SecAction, which follows rule 1, ensures
that rule 2 is not processed if there is no match in rule 1.
Skipping using labels doesn’t make the rules easier to read, although it makes large rule
groups easier to maintain:
SecRule ARGS K1 id:1,nolog,pass,skipAfter:11
SecRule ARGS K2 id:2,block
SecAction nolog,pass,skipAfter:12
SecLabel 11
SecRule ARGS K3 id:3,block
SecLabel 12


thanks smilie
[Up] [Print Copy]
  [Discussion]   If-then-else in modsecurity? :D 21/12/2010 10:33:43 (+0700) | #2 | 227524
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Bạn nói thử cách hiểu của bạn xem.
Let's build on a great foundation!
[Up] [Print Copy]
  [Discussion]   If-then-else in modsecurity? :D 21/12/2010 10:49:26 (+0700) | #3 | 227525
zjm_zjm
Member

[Minus]    0    [Plus]
Joined: 26/07/2009 01:53:09
Messages: 159
Location: hhhhhh
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]
Ở phần này theo em hiểu thì...
Code:
SecRule ARGS K1 id:1,nolog,pass,skip:2
 SecRule ARGS K2 id:2,block
 SecAction nolog,pass,skip:1
 SecRule ARGS K3 id:3,block

Tại dòng 1 nếu match K1 thì nó sẽ bỏ dòng 2 và thực hiện tiếp dòng 3
Tại dòng 3 này nó chỉ xác định lại dòng 1 smilie
và dòng cuối thì nó thực hiện

Không biết đúng không nữa smilie
[Up] [Print Copy]
  [Discussion]   If-then-else in modsecurity? :D 21/12/2010 11:01:46 (+0700) | #4 | 227527
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
Chưa đúng rồi. Bạn đọc lại xem action skip sẽ làm gì nhé.
Let's build on a great foundation!
[Up] [Print Copy]
  [Discussion]   If-then-else in modsecurity? :D 21/12/2010 19:28:27 (+0700) | #5 | 227569
zjm_zjm
Member

[Minus]    0    [Plus]
Joined: 26/07/2009 01:53:09
Messages: 159
Location: hhhhhh
Offline
[Profile] [PM] [WWW] [Yahoo!] [MSN] [ICQ]
Do vốn tiếng Anh có hạn nên đã xem qua rất nhiều lần mà không hiểu lắm, mong anh quanta giải thích cái đoạn trên dùm, thanks smilie
[Up] [Print Copy]
  [Discussion]   If-then-else in modsecurity? :D 21/12/2010 23:26:02 (+0700) | #6 | 227586
[Avatar]
quanta
Moderator

Joined: 28/07/2006 14:44:21
Messages: 7265
Location: $ locate `whoami`
Offline
[Profile] [PM]
OK. Nếu bạn đọc phần trên của đoạn này "Changing rule flow" có thể bạn sẽ hiểu rõ hơn đấy.

skip action bỏ qua một hoặc nhiều rules tiếp theo nếu matches. Như vậy:
Code:
SecRule ARGS K1 id:1,nolog,pass,skip:2
SecRule ARGS K2 id:2,block
SecAction nolog,pass,skip:1
SecRule ARGS K3 id:3,block

có nghĩa là:

Dòng 1: đánh số rule này là 1, nếu matches (request kiểu như http://yourdomain.com/?r=xxK1yy) thì không log, cho phép đi qua, và bỏ qua 2 rules (hoặc chains) tiếp theo, thực hiện rule số 3. Nếu không matches thì thực hiện rule số 2.

Dòng 3: nếu đã chạy đến dòng này rồi thì sẽ luôn luôn bỏ qua rule số 3 (unconditional match). Có lẽ ở đây tác giả có chút nhầm lẫn khi giải thích thế này:
The unconditional match in SecAction, which follows rule 1, ensures that rule 2 is not processed if there is no match in rule 1.
 


Cách hiểu tốt nhất là thực hành. Do vậy, mình đề nghị bạn sửa mấy cái nolog thành log (có thể thêm msg: vào nữa), rồi thử lần lượt một số request như:
Code:
http://localhost/?x=K1&y=K3
 http://localhost/?x=K0&y=K2
 http://localhost/?x=K0&y=K2&z=K3
 http://localhost/?x=K0&y=K4&z=K3

và soi error_log thì sẽ rõ hơn đấy.
Let's build on a great foundation!
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|