ãšã³ããªãŒ
ãã¹ãã®èªååã®ã¿ã¹ã¯ã¯æ°ãããã®ã§ã¯ãããŸããããããã§ãWebã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãã®åéã§å©çšå¯èœãªããŒã«ã«ã¯éçããããŸãã
çæéã§æŽæ°ããå¿
èŠããã100çš®é¡ã®Webã¢ããªã±ãŒã·ã§ã³ãããããããã®æ©èœãæ€èšŒãããã¹ãããªãå Žåã¯ã©ããªããŸããïŒ UIãã¹ãã®éçºã«ã¯æéãããããŸããã
curlãªã¯ãšã¹ããäœæãã200 OKãæ»ã£ãããšã確èªããã ãã§ã¯ååã§ã¯ãããŸããã
åççãªåŠ¥åãå¿
èŠã§ããã·ã³ãã«ã§ãããšåæã«ãèªåãã¹ãã®éçºã«ååãªæ±çšããŒã«ã§ãã ããã§
SWATãçãŸããŸããã
æ ¹æ ã®ã¢ã€ãã¢
ãããã£ãŠããšã³ããŠãŒã¶ãŒã®èгç¹ããèŠãSWATã¯ããã¹ãã¹ã¯ãªãããå®è¡ããããã®ã³ã³ãœãŒã«ã¯ã©ã€ã¢ã³ããšãããããèšè¿°ããããã®èšèªïŒ
DSL ïŒã§ãã
ãŠãŒã¶ãŒã¯ãã¹ãã¹ã¯ãªãããç¹å®ã®åœ¢åŒã§äœæããå¥ã®ãã£ã¬ã¯ããªã«é
眮ããŠèµ·åããŸãã äžè¬çã«ããã¹ãŠæ¬¡ã®ããã«ãªããŸãã
$ swat /path/to/your/project/ $base_url
ãããã£ãŠãSWATãããžã§ã¯ãã¯ãWebã¢ããªã±ãŒã·ã§ã³ããã¹ããããšãã«ãã¹ãŠã®httpèŠæ±ãéä¿¡ãããããŒã¹
URLãšåæ§ã«ããã¹ãã¹ã¯ãªãããå«ããã©ã«ããŒã§ãã ããŠããããŸã§ã®ãšããæ°ãããã®ã¯äœããããŸãããå€ãã®ã¬ã€ã¢ãŠãã¯åæ§ã®ã¬ã€ã¢ãŠãã䜿çšããŠããŸã... SWATã·ã¹ãã ã®æ¬è³ªã¯äœã§ããïŒ
å°ãã®éãSWATã«ã€ããŠè©±ããŠããããšãå¿ããŠãcurlãŠãŒãã£ãªãã£ã䜿çšããŠéåžžã®httpèŠæ±ãäœæãã
grepãŠãŒãã£ãªãã£ã䜿çšããŠå¿çãåæããããšããã§ããªããšæ³åããŠãã ããã
$ curl $base_url | grep foo-bar-baz
å®éãããã¯SWATãã¬ãŒã ã¯ãŒã¯ã®çé«ã§ãã
å
šäœã®ãã€ã³ãã¯ããã¹ãããããµãŒããŒããã®å¿çããããŸããŸãªæ€çŽ¢ãå®è¡ã§ãã
ããã¹ããšããŠåã«èªèã
ã ãæåããhttpã¹ããŒã¿ã¹ã®æ€èšŒã远å ãããããšã§ãã ç§ã®å®è·µã瀺ããŠããããã«ãããã2ã€ã®ã¡ãœããïŒå€§ãŸãã«èšããšã200 OKãæ»ã£ãããšã確èªãã
äœãè¿ããã
ãã確èªããïŒã¯ã衚é¢
ã¹ã¢ãŒã¯ãã¹ãããæ¬æ Œçãª
æ©èœçãªãã¹ããŸã§ãããŸããŸãªè€éãã®ãã¹ãã¹ã¯ãªãããèšè¿°ããã®ã«ååã§ã
ãã¢ããªã±ãŒã·ã§ã³ã§ã®ç§ã®å®åçµéšã瀺ããŠããããã«ãSWATã«ã¯å€ãã®èœåããããŸãã
DSLã®èª¬æãšããŒã¿æ§é
SWATã¯ããã¡ã€ã«ãšãã£ã¬ã¯ããªã®åœåã«é¢ããäžé£ã®èŠåã«åºã¥ããŠããŸãã ãŸããä»»æã®ããã¹ãïŒãã®å Žåã¯ãµãŒããŒããã®å¿çïŒãæ€èšŒããããã®ã«ãŒã«ãèšè¿°ããããã®
ç¹å¥ãªæ§æãæäŸããŸãã
ãŸããå
žåçãªSWATãããžã§ã¯ãã®ãã¡ã€ã«æ§é ã®èª¬æããå§ããŸãããã
ãããã£ãŠãåè¿°ã®ããã«ãSWATãããžã§ã¯ãã¯
ããã¹ãããžãã¯
ãèšè¿°ãããã¡ã€ã«ãšãµããã£ã¬ã¯ããªã®ãããã£ã¬ã¯ããªã«ãããŸããã
ãŸããæåã«è¡ãå¿
èŠãããã®ã¯ããããžã§ã¯ããäœæããã ãã§ãïŒ
$ mkdir swat-project
è³æã®çè§£ãç°¡åã«ããããã«ãããã€ãã®çšèªã玹ä»ããŸãã
Webã¢ããªã±ãŒã·ã§ã³ã®ãã¹ããåŠçããå Žåã䜿çšå¯èœãª
ãªãœãŒã¹ã«ã€ããŠè©±ãåãããããŸããŸãªhttp
ã¡ãœããã䜿çšããŠãªã¯ãšã¹ããéä¿¡ã§ããã«ãŒãã«ã€ããŠç°¡åã«èª¬æããŸãã
ãã®ããããã¹ãããŠããã¢ããªã±ãŒã·ã§ã³ã«ã¯ããããã«ã¢ã¯ã»ã¹ããããã®æ¬¡ã®ãªãœãŒã¹ãšã¡ãœããã®ã»ããããããšããŸãã
GET /
SWATã䜿çšããŠãã®æ§æãèšè¿°ããããã«å¿
èŠãªãã®ã¯ã»ãšãã©ãããŸãããSWATãããžã§ã¯ãã§æ¡çšãããŠããå¥çŽã䜿çšããŠãã ãããã€ãŸãããªãœãŒã¹ã¯åãªããã£ã¬ã¯ããªã§ãããã¡ãœããã¯ãã¡ã€ã«ã§ãã å®éã«ã¯æ¬¡ã®ããã«ãªããŸãã
$ cd swat-project $ mkdir -p foo/bar $ mkdir -p bar/baz $ touch get.txt $ touch foo/bar/get.txt $ touch bar/baz/post.txt
ååãæç¢ºã§ããããšãé¡ã£ãŠããŸãã ãã£ã¬ã¯ããªåã¯httpãªãœãŒã¹åã«å¯Ÿå¿ãããã¡ã€ã«åã¯httpã¡ãœããåã«å¯Ÿå¿ããŸãã ã¡ãœãããã¡ã€ã«åã«* .txtæ¡åŒµåãå«ãŸããçç±ã¯ãåŸã»ã©æããã«ãªããŸãããä»ã¯ããã«æ³šæãæã£ãŠããŸããã
ããã§ãšãããããŸãïŒ å®è¡å¯èœãªæå°éã®ãã¹ãã»ãããäœæããŸããïŒãã¡ãããèŠæ±ãåãå
¥ãã
WebãµãŒãã¹ããããšä»®å®ããŸãïŒã
$ cd swa-project $ swat ./ 127.0.0.1:3000 /home/vagrant/.swat/.cache/31999/prove/00.GET.t ........... ok 1 - GET 127.0.0.1:3000/ succeeded
ã芧ã®ãšãããSWATã¯ãã¡ã€ã«æ§é ãæ£åžžã«è§£æããäžé£ã®httpèŠæ±ã«å€æããŠå®è¡ããŸãã ãã®å Žåãããã©ã«ãã§ã¯ããµãŒããŒããã®å¿çã¯æåãã
httpã¹ããŒã¿ã¹ã®ååšã«ã€ããŠæ€èšŒããããµãŒããŒããã®ãšã©ãŒã®å Žåããã®ãããªãã¹ãã¯ãã¹ããŸããã
$ cd swat-project
ãã®ãããåªããç¹ãšããŠãSWATã¯æªç¥ã®ãªãœãŒã¹ãæ£åžžã«æ€èšŒããããšã«ããããŸãã¯åã«ãµãŒããŒããåä¿¡ããå¿çã®httpã¹ããŒã¿ã¹ãåæããããšã«ããæ©èœããããšãããããŸãã
SWATã
ã©ã®ããã«ãªã¯ãšã¹ããè¡ã
ãã«ã€ããŠãããã€ãã®èšèãèšãããã§ãã
curlãŠãŒãã£ãªãã£ãŒã¯ãhttpèŠæ±ãçæããããã«äœ¿çšãããŸãã ããšãã°ãPerlã®ã©ã€ãã©ãªãªã©ãcurlãéžæãããŠäœ¿çšãããªãã£ãã®ã¯ãªãã§ããïŒ ïŒäŸïŒ
LWP ïŒã ç§èŠãã«ãŒã«ã®å Žåã®éèŠãªå©ç¹ã®1ã€ã¯ã䜿ãããããåªããããã¥ã¡ã³ãããµããŒãã§ãïŒæè¿ãéèŠã§ã¯ãªããã±ãããå§ããŸããããæ°åã§çããããŸããïŒã ãã®ãŠãŒãã£ãªãã£ã䜿çšããŠããéãcurl
web socketsãã§ããªãéããcurlã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ãä»ããŠå®è£
ã§ããªãã¿ã€ãã®httpèŠæ±ã«åºãããããšã¯ã»ãšãã©ãããŸããã§ãã...
ãã®ãããSWATã¯curlã䜿çšããŠhttpèŠæ±ãäœæããŸãã ããã¯ããã®ãŠãŒãã£ãªãã£ã«é¢ããŠããªã¯ãšã¹ãã«å¿
èŠãªãã¹ãŠã®ãã©ã¡ãŒã¿ãŒãèšè¿°ããããšãæå³ããŸãã ãã®ããã«ãããããã¯ãšãªèšå®ã䜿çšãããŸã-swat.iniãã¡ã€ã«ããªãœãŒã¹ãã£ã¬ã¯ããªå
ã§ãŠãŒã¶ãŒãäœæããcurlãåŒã³åºãããã®ãã©ã¡ãŒã¿ãŒãå«ãããã®åäœã決å®ããåãã¹ãã¹ã¯ãªããã®è¿œå ãã©ã¡ãŒã¿ãŒãèšå®ã§ããŸãã äŸãæããŸãã
$ cat bar/baz/swat.ini
swat.iniãã¡ã€ã«ã§èšå®ã§ãããã©ã¡ãŒã¿ãŒã®ãªã¹ãã®è©³çްã«ã€ããŠã¯ã
ããã¥ã¡ã³ããåç
§ããŠãã ãã
ãswat.iniãã¡ã€ã«ã¯éåžžã®
bashã¹ã¯ãªããã§ããããšã«æ³šæããããšãéèŠã§ããç¹ã«ãæšæºã®bashã³ã³ã¹ãã©ã¯ãã䜿çšã§ããŸããåµé æ§ã®äœå°ãå€ããäŸãããçè§£ããããã«ãSWATããã¥ã¡ã³ãã®ããŒãžã«èå³ã®ããèªè
ãéããŸãã
ããŠããã¹ãŠã¯åé¡ãããŸããããã芧ã®ãšããããµãŒããŒããã®å¿çã確èªããåã«äžåºŠãèšã£ãããšã¯ãããŸãããçå®ãé€ããhttpã¹ããŒã¿ã¹ã®ã¿ã§ãã äžèšã®äžé£ã®ãã¹ããå®è¡ããããšã§çè§£ã§ããããšãã¢ããªã±ãŒã·ã§ã³ãªãœãŒã¹ã®ç¹å®ã®ã»ãããå©çšå¯èœã§ããããããã®ãªãœãŒã¹ãèŠæ±ãããšãã«ãµãŒããŒãæåïŒ200 OKïŒå¿çãè¿ããããšããã¹ãŠçè§£ããŸããã
SWAT DSLã«ã€ããŠè©±ãããæãæ¥ãŸããã
SWAT DSL
SWAT DSLã¯ããã¬ãŒã ã¯ãŒã¯ã®2çªç®ã®ïŒãªãœãŒã¹ãšã¯ãšãªèšå®ã説æããåŸã®ïŒã¡ã€ã³ã³ã³ããŒãã³ãã§ãã DSLã䜿çšãããšããµãŒããŒããåä¿¡ããå¿çããã§ãã¯ããŠãåäžè¡ã¹ããŒãã¡ã³ããšããŠèª¬æãããŠããããã€ãã®ã«ãŒã«ã«æºæ ããŠãããã©ããã確èªã§ããŸãã
RULE1 RULE2
ã¹ããŒãã¡ã³ãã«æºæ ããŠããªãå Žåããã¹ããšã©ãŒãçæãããŸãã ã¹ããŒãã¡ã³ãããšã«ãçããå床ãã§ãã¯ãããŸãã ããã¯ãæ€èšŒããã»ã¹ã®æ£åŒãªèª¬æã§ãã å®éããã¹ãŠãããåçŽã§ãããã¹ããŒãã¡ã³ãã¯ããµãŒããŒã®å¿çã§
衚瀺ãããããã¹ããŸãã¯æ£èŠè¡šçŸã®åãªãæ®éã®è¡ã§ãã
äŸãæããŸãã
äžèšã®äŸã®åŸã次ã远å ããŸãã
- SWATã¯DSLãçŽæ¥æäŸããŸããããããã¹ãããŒã¿ã®æ€èšŒã«æ¢è£œã®ã¢ãžã¥ãŒã«Outthentic-DSLã䜿çšããŸãã SWAT DSLã®æ©èœãããæ·±ãçè§£ããã«ã¯ããã®ã¢ãžã¥ãŒã«ã®ããã¥ã¡ã³ãã䜿çšããŠãã ãã
- ã«ãŒã«ãŸãã¯ïŒãã®çšèªã®å矩èªïŒæ€èšŒã¹ããŒãã¡ã³ããèšè¿°ãããšããã³ã¡ã³ãã䜿çšã§ããŸã
- DSLã¹ã¯ãªãããè§£æãããšãã空çœãŸãã¯ç©ºçœè¡ã®ã¿ãå«ãè¡ã¯ç¡èŠãããŸã
- SWATã¯è¡åäœã®æ€èšŒã¢ãŒãã䜿çšããŸããã€ãŸãããµãŒããŒããã®å¿çãè¡ã«åå²ãããåè¡ã次ã®ã«ãŒã«ãšæ¯èŒãããŸãã å°ãªããšã1è¡ãã«ãŒã«ã«äžèŽããå ŽåãSWATã¯ã³ã³ãœãŒã«ã¯ã©ã€ã¢ã³ãããã®åºåã§ã¬ããŒãããããããã®ã«ãŒã«ã®ãã¹ãã¯åæ ŒãšèŠãªãããããã§ãªãå Žåã¯åæ Œãšã¿ãªãããŸãã
- è€æ°è¡ã®ãã§ãã¯ãå¿
èŠãªå Žå-SWATãããã¯ã䜿çšã§ããŸã
- æ£èŠè¡šçŸã®æ§æã¯ãPerlã®æ£èŠè¡šçŸãšäžèŽããå¿
èŠããããŸãã Perlã§æžãããSWAT DSL
- æ€èšŒã«ãŒã«ã¯éçãã€ãŸã ããã§ã®äŸã®ããã«äºåã«èª¬æããŸãããSWATã¯ã ãžã§ãã¬ãŒã¿ APIãä»ããŠãœãããŠã§ã¢APIãä»ããŠããã®ãããªã«ãŒã«ãåçã«èšå®ããæ©èœãæäŸããŸã
- ãã®èšäºã§ã¯ãDSLã®ãã¹ãŠã®æ©èœãšãã¹ãã¹ããŒãã¡ã³ããèšè¿°ããããã®ã«ãŒã«ã«ã€ããŠèšåããããšã¯ã§ããŸããããããã¯éåžžã«å€æ§ã§å€æ°ãããããèå³ã®ããèªè
ã«ã¯ããã¥ã¡ã³ãããŒãžãåç
§ããŠãã ããã
æ€èšŒã«ãŒã«ãäœæããããã®DSLããããŸãããçåã¯æ®ããŸãããããã®ã«ãŒã«ãã©ãã§äœæããã®ã§ãããã çãã¯ããèªäœã瀺åããŠããŸã-ãã¡ãããhttpã¡ãœãããã¡ã€ã«ã§ïŒ ïŒã¡ãœãããã¡ã€ã«åã®* .txtæ¡åŒµåã«é¢ããã³ã¡ã³ããæãåºããŠãã ããïŒã
ããŸããŸãªãªãœãŒã¹ãèŠæ±ãããšãã®ãµãŒããŒããã®å¿çã«ããã€ãã®ãã§ãã¯ã远å ããŠã以åã®äŸãæžãæãããããããæŽæ°ããŸãã
$ cat get.txt HELLO USER! THIS IS INDEX PAGE $ cat foo/bar/get.txt I AM FOO-BAR $ cat bar/baz/post.txt POST TO BAR-BAZ OK
次ã«ããã¹ããå床å®è¡ããŸãã
$ cd swat-project $ swat ./ 127.0.0.1:3000 /home/vagrant/.swat/.cache/1422/prove/foo/bar/00.GET.t ... ok 1 - GET 127.0.0.1:3000/foo/bar succeeded
ã芧ã®ãšãããSWATã¯ãã®ä»äºãè¡ãããµãŒããŒããã®å¿çãæ€èšŒããŸããã ããã¯ãå®äºã§ããSWAT DSLã®æåã®ç¥äººã§ãã
ãã®èšäºã®çµããã«ãSWATã®ãã1ã€ã®è峿·±ãæ©èœã玹ä»ããããšæããŸããããã«ãããæãåçŽãªãã§ãã¯ã ãã§ãªããæ¬æ Œçãªæ©èœãã¹ããäœæã§ããŸãïŒæåã«SWATã«ã¯å€ãã®æ©èœããããšèšã£ãŠããããšãæãåºããŠãã ãã...ïŒã ããã§ã¯ãåå©çšå¯èœãªhttpãªã¯ãšã¹ãã«ã€ããŠè©±ããŸãããã
åå©çšå¯èœãªhttpãªã¯ãšã¹ã
å€ããå°ãªããè€éãªWebã¢ããªã±ãŒã·ã§ã³ãŸãã¯ãµãŒãã¹ã¯ãå€ãã®åå¥ã®ãªãœãŒã¹ãŸãã¯ã«ãŒãã«åè§£ãããŠãããå®éããããã®ãªãœãŒã¹ã«é¢ããŠåŒ·ããæ¥ç¶ããããŠããŸãã ããã¯ç§ãèšãããããšã§ã-ãããªãœãŒã¹ãžã®ãªã¯ãšã¹ãã¯ãå€ãã®å Žåãå¥ã®ãªãœãŒã¹ãžã®äºåçãªãªã¯ãšã¹ããæå³ããŸãã ã€ãŸã åã
ã®ãªãœãŒã¹ã«å¯Ÿããåäžã®ç¬ç«ãããªã¯ãšã¹ãã«ã€ããŠã§ã¯ãªãããã®ãããªãªã¯ãšã¹ãã®ãã§ãŒã³ã«ã€ããŠè©±ããŠããŸãã äŸã¯æããã§ãïŒ
- èªèšŒ/æ¿èªãå¿
èŠãšãããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹
- ããŒã¿ããŒã¹å
ã®ã¬ã³ãŒãã®äœæãå€ãã¬ã³ãŒãã®äºååé€ãå¿
èŠ
- æ¡ä»¶ä»ãã¯ãšãª-ããŒã¿ããŒã¹ããã¬ã³ãŒããåé€ããŸãïŒããå ŽåïŒ
ãªã©...
æããã«ãã1ã€ã®ãã¹ã-1ã€ã®ãªãœãŒã¹-1ã€ã®èŠæ±ããšããã¢ãããŒãã§ã¯ããã®ãããªãã¹ãã·ããªãªã¯å®è¡äžå¯èœã§ãã 1ã€ã®ãªãœãŒã¹ã«ãªã¯ãšã¹ããè¡ãåã«ãäœããã®æ¹æ³ã§ã1ã€ãŸãã¯å Žåã«ãã£ãŠã¯è€æ°ã®ä»ã®ãªãœãŒã¹ã«ãªã¯ãšã¹ããè¡ãå¿
èŠããããŸãã ã©ãããïŒ ãããŠããã§ãSWAT
ã¢ãžã¥ãŒã«ãç§ãã¡ã®å©ãã«ãªããŸã-åå©çšå¯èœãªhttpãªã¯ãšã¹ãã
äžè¬çã«ãSWATã¢ãžã¥ãŒã«ã¯é¢æ°ã«éåžžã«äŒŒãŠãããäžåºŠå®çŸ©ãããšãå¿
èŠã«å¿ããŠäœåºŠã§ãåŒã³åºãããšãã§ããŸããå¿
èŠã«å¿ããŠãã¢ãžã¥ãŒã«å
¥åã«åæãã©ã¡ãŒã¿ãŒãæž¡ããçµæãåŠçããŸããSWATã§ã¯ã
ã¢ããã¹ããªãŒã /ããŠã³ã¹ããªãŒã å±¥æŽã¡ã«ããºã ãéããŠå®è£
ãããŸãã
ãããã£ãŠãSWATã¢ãžã¥ãŒã«ã«ã€ããŠçè§£ããå¿
èŠããããã®ïŒ
- ãããã¯ãSWATãããžã§ã¯ãã§äœæãããä»ã®ãã¹ãŠãšåãhttpãªãœãŒã¹ã§ããå¯äžã®éãã¯ãSWATãã¢ãžã¥ãŒã«ãçŽæ¥åŒã³åºããªãïŒhttpãªãœãŒã¹ã«é¢é£ããèŠæ±ãå®è£
ããïŒããšã§ãã
- å¥ã®ãªãœãŒã¹ã¯ãSWAT HOOKs APIãä»ããŠSWATã¢ãžã¥ãŒã«ãåŒã³åºãããšãã§ããŸã
- å¥ã®ãªãœãŒã¹ã§SWATã¢ãžã¥ãŒã«ãåŒã³åºãããšã¯ãæåã«SWATãã¢ãžã¥ãŒã«ãªãœãŒã¹ã«å¯ŸããŠhttpèŠæ±ãäœæããå¿çãæ€èšŒããããšãæå³ããŸãïŒã€ãŸããhttpã¹ããŒã¿ã¹ã®ãã§ãã¯ãããªãœãŒã¹ã«å®çŸ©ãããã«ãŒã«ã«ããæ€èšŒãŸã§ããã®ãªãœãŒã¹ã«é¢é£ä»ãããããã§ãã¯ãã§ãŒã³å
šäœãå®è¡ããŸãïŒããããŠãSWATã¢ãžã¥ãŒã«ãåŒã³åºãããã¡ã€ã³ãªãœãŒã¹ã«å¯ŸããŠãªã¯ãšã¹ããè¡ããŸãã
- SWATã®ããã¥ã¡ã³ãããŒãžã§ã¯ãããçš®ã®SWATã¢ãžã¥ãŒã«ãåŒã³åºããªãœãŒã¹ã¯ã¢ããã¹ããªãŒã ã¹ããŒãªãŒïŒã¡ã€ã³ã¹ããŒãªãŒïŒãšåŒã°ããåŒã³åºãããSWATã¢ãžã¥ãŒã«ïŒããŠã³ã¹ããªãŒã ã¹ããŒãªãŒïŒã¯ã»ã«ã³ããªã¹ããŒãªãŒã§ãã çšèªã¯jenkins-ci.orgããåãããŠããŸãããSWATã§ã¯ãã®ã¢ãã«ã¯éã«ãªã£ãŠããŸãã Jenkinsã§ã¯ãã¡ã€ã³ã¿ã¹ã¯ã®åŸã«ããŠã³ã¹ããªãŒã ãžã§ããåŒã³åºãããŸã
- SWAT HOOKs API-Perlã³ãŒãïŒãã®ã³ã³ããã¹ãã§ã¯HOOKS APIïŒãèšè¿°ããããšã§SWATãã¹ãã¹ã¯ãªãããæ¡åŒµããæ©èœã«ãããSWATã¢ãžã¥ãŒã«ãããã°ã©ã ã§åŒã³åºãããšãã§ããŸãã
äžèšã®ãã¹ãŠãç°¡åãªäŸã§èª¬æããŸãããã 2ã€ã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãæäŸããWebãµãŒãã¹ãçšæããŸãããã
POSTãã°ã€ã³/-ãŠãŒã¶ãŒèªèšŒçšã®ãªãœãŒã¹ã æå¹ãªãã°ã€ã³ãšãã¹ã¯ãŒãããµãŒããŒã«éä¿¡ããããšãã¢ããªã±ãŒã·ã§ã³ã¯
Cookieã»ãã·ã§ã³ãè¿ããŸãã ç°¡åã«ããããã«ããµãŒããŒã¯POSTèŠæ±ã®ååä»ããã£ãŒã«ãïŒãŠãŒã¶ãŒãšãã¹ã¯ãŒãïŒãä»ããŠãŠãŒã¶ãŒåãšãã¹ã¯ãŒããåãå
¥ãããšæ³å®ããŠããŸãã
GETå¶éä»ã/-èªèšŒããããŠãŒã¶ãŒã®ã¿ãä¿è·ããããªãœãŒã¹ã«ã¢ã¯ã»ã¹ã§ããŸãã
ãã®ãããªã¢ããªã±ãŒã·ã§ã³ã®SWATãã¹ããäœæããŸãã ããã§ã®æãããªãã¹ãã¹ããŒãªãŒã¯ãå®å
šãªGETå¶éãªãœãŒã¹ãèªèšŒããŠã¢ã¯ã»ã¹ããããšã§ãã
ãªãœãŒã¹ãšã¡ãœãããèšè¿°ãããããžã§ã¯ãã¹ã±ã«ãã³ãäœæããŸãããã
$ mkdir swat-project $ cd swat-project $ mkdir login $ mkdir restricted $ touch login/post.txt $ touch restricted/get.txt
ããã§ããã°ã€ã³/ãªãœãŒã¹ãSWATã¢ãžã¥ãŒã«ã§ããããšã宣èšããå¿
èŠããããŸãã GETå¶éä»ã/ãªãœãŒã¹ãåŒã³åºã
åã«åŒã³åºãå¿
èŠããããŸãã
ãã®ããã«ãªãœãŒã¹èšå®ãã¡ã€ã«ã䜿çšããŸã-swat.iniãã¡ã€ã«ïŒ
$ cat login/swat.ini swat_module=1
swat_module倿°ã1ã«èšå®ãããšããªãœãŒã¹ãSWATã¢ãžã¥ãŒã«ãšããŠå®£èšãããŸãã
èªèšŒã«å¿
èŠãªãã©ã¡ãŒã¿ãŒã远å ããŸãã ãã®å ŽåãäŸãç°¡åã«ããããã«ããã°ã€ã³ãšãã¹ã¯ãŒãã¯æç€ºçã«èšå®ãããŸãããSWATã§ã¯ããã®çš®ã®ãã©ã¡ãŒã¿ãŒããããžã§ã¯ãããåé€ããã»ãã¥ãªãã£äžã®çç±ããå¥ã®å Žæã«èšå®ããããšãã§ããŸãã
$ cat login/swat.ini swat_module=1 url_params="-d user=my-login -d password=my-password"
ãããŠæåŸã«ãæåŸã®ä»äžã-èªèšŒãæåããå Žåã«ãµãŒããŒãCookieãè¿ããŸããã©ããã«ä¿åããå¿
èŠããããŸããåãcurlãŠãŒãã£ãªãã£ãŒã®cookie-jarã¡ã«ããºã ã䜿çšããŸãããªãœãŒã¹ã«å¯ŸããèŠæ±ã®æçµããŒãžã§ã³ã¯æ¬¡ã®ããã«ãªããŸãã
$ cat login/swat.ini swat_module=1
OKãPOSTãã°ã€ã³/æºåå®äºãªãœãŒã¹ã æåã¹ããŒã¿ã¹ïŒ200 OKïŒã«å ããŠããµãŒããŒãæ»ãå¿
èŠã
ããããšãããã£
ãŠããå ŽåïŒãããŠ;-)ïŒãã¡ãœãããã¡ã€ã«ã«è¿œå ã®ãã§ãã¯ã远å ã§ããŸãã
$ cat login/post.txt hello user!
GETå¶éä»ã/ãåŒã³åºãåã«POSTãã°ã€ã³/ãåŒã³åºããŸããããã¯æ¬¡ã®ããã«è¡ãããŸãã
$ cat restricted/hook.pm run_swat_module( POST => '/login' );
ç§ãã¡ã¯äœãããŸãããïŒ GETå¶é/ãªãœãŒã¹çšã®ããã¯ãã¡ã€ã«ãäœæãã
æåã« POSTãã°ã€ã³/ãªã¯ãšã¹ããè¡ãããšãèŠæ±ã
ãŸããç§ãã¡ã¯äœãæ®ããŸãããïŒ GETå¶éä»ãåŒã³åºã/ãèšå®ããŠãPOSTãã°ã€ã³/çµç±ã®èªèšŒãæåããåŸã«äœæãããCookieã䜿çšããããã«ããŸãã
$ cat restricted/swat.ini url_params="--cookie $test_root_dir/cookie.txt"
ãŸããPOSTãã°ã€ã³/ãªãœãŒã¹ãšåæ§ã«ãGETå¶é/ãªã¯ãšã¹ãã®å ŽåããµãŒããŒããã®å¿çã«è¿œå ã®ãã§ãã¯ãèšå®ã§ããŸãã
$ cat login/get.txt restricted content
åå©çšå¯èœãªSWATãªã¯ãšã¹ãã«é¢ããŠä»ã«ç°¡åã«èšåãããããšã¯ãããŸããïŒæ®å¿µãªããããã®èšäºã®åœ¢åŒã§ã¯ãã¹ãŠã®è³æãå®å
šã«é瀺ããããšã¯ã§ããŸããïŒã ç§ã¯è«æããªã¹ãããŸãïŒ
- SWATã¢ãžã¥ãŒã«ã®ã«ã¹ã±ãŒãåŒã³åºã-éåžžã®æ©èœãšåæ§ã«ã1ã€ã®ã¢ãžã¥ãŒã«ãå¥ã®ã¢ãžã¥ãŒã«ãåŒã³åºãããšãã§ããŸãã
- ã¡ã€ã³ãªãœãŒã¹ãšãã®äžã§åŒã³åºãããSWATã¢ãžã¥ãŒã«éã®ããŒã¿ïŒç¶æ
ïŒã®è»¢éã ã¯ããå¯èœã§ãã çŽç²ã«æè¡çã«ã¯ãã¢ãžã¥ãŒã«ãšãããåŒã³åºããã³ãŒãã¯1ã€ã®ããã»ã¹ã§å®è¡ãããŸãã ããã¥ã¡ã³ããåç
§ããŠãã ãã
- SWATã¢ãžã¥ãŒã«ã®å
¥åã«ãã©ã¡ãŒã¿ãŒãæž¡ããã¢ãžã¥ãŒã«ãå®è£
ããã³ãŒãå
ã§ãããã«ã¢ã¯ã»ã¹ããŸã-ããã¯ã¢ãžã¥ãŒã«å€æ°ãšåŒã°ããŸããããã¥ã¡ã³ããåç
§ããŠãã ãã
ãããã«
èšäºã®æåŸã«ã
ãããžã§ã¯ãããŒãžã«ç§»åãããŠãŒãã£ãªãã£ã®ã€ã³ã¹ããŒã«æ¹æ³ãšäœ¿ç𿹿³ãåŠã³ãŸããã...ããšããèšãåãã§çµãããããã¯ãããŸããããæªãã¯ãããŸããã:-)
ããããããã§ããªããä»äºã§SWATã䜿ãå§ããããšãã§ããçç±ããããŸãïŒç§èŠïŒïŒ
- Larry Woll -SWATãèªç±ã«èšãæããããŠãã ãããSWATã䜿çšãããšãã·ã³ãã«ãªãã®ãã·ã³ãã«ã§è€éãªãã®ã«ããããšãã§ããŸãã ãµã³ãã«ã§èšè¿°ããªããã°ãªããªãã³ãŒããéåžžã«å°ãªãããšã«æ³šç®ããŠãã ãããåæã«ãSWATã¯Perlã«æ¡åŒµã§ãã匷åãªããŒã«ã§ãã åºæ¬çãªããã°ã©ãã³ã°ã¹ãã«ãåããã·ã¹ãã 管çè
ã§ãããçµéšè±å¯ãªéçºè
ã§ãããSWATã¯åæ§ã«äŸ¿å©ã§çè§£ãããããã®ã§ãã
- SWATã¯æå€§éã«å®çšçã§ãã ç¹å®ã®åé¡ãã€ãŸãé »ç¹ã«æŽæ°ããã倿°ã®ã¢ããªã±ãŒã·ã§ã³ã®èªåãã¹ãã®è¿
éãªéçºã解決ããããã«ãçæŽ»ã®çŸå®ã«åºã¥ããŠçºæãããŸããã SWATããäžèŠãªæ©èœããã¹ãŠåé€ããŸãããåé¡ã解決ããããã«æå€§éã«åŒ·åãããŠããããè² è·ãã«å¯ŸããŠã¯äœãæäŸããŸããã
- SWATã¯ãåºã䜿çšããå®çžŸã®ãããœãªã¥ãŒã·ã§ã³ã«åºã¥ããŠæ§ç¯ãããŠãããã·ã¹ãã 管çè
ãšéçºè
ã®äž¡æ¹ã«ç¥ãããŠããŸããã€ãŸããcurlãšbashã§ãã curlãç¥ã£ãŠãããªãããã§ã«SWATæ§æã«æ
£ããŠããã®ã§ãswatã¯swat.iniãã¡ã€ã«ã®èšå®ãçŽæ¥curlã«å€æããŸãïŒãŸãããŸãã¯ã»ãŒãã®ããã§ã;-)ïŒãbashã®åºæ¬ãç¥ã£ãŠããã°ãSWATèšå®ãç°¡åã«èª¬æã§ããŸããè³æºã®
- SWATã¯è¡æãããžã§ã¯ãSparrowã«ãã£ãŠãµããŒããããŠããŸããã€ãŸããSWATãããžã§ã¯ãã管çããã³éçºããããã®äŸ¿å©ãªã€ã³ãã©ã¹ãã©ã¯ãã£ãšãSWATã«ãã£ãŠäœæããããã¹ããåå©çšããäžå€®ã®SparrowHubãªããžããªããããŠã³ããŒãããŠãåããªããžããªã«ã¢ããããŒãããããšãã§ããŸãã詳现ã«ã€ããŠã¯ããã¡ããšãã¡ããã芧ãã ããã
ã³ã¡ã³ãã質åãåŸ
ã£ãŠããŸããããããšã
PSãã®èšäºã§èšåããWebã¢ããªã±ãŒã·ã§ã³ããã³SWATãã¹ãã®ãœãŒã¹ã¯ãããããããŠã³ããŒãã§ããŸããä»åŸã®PPSãã¹ãŠïŒ