OWASP Night 2019-03-11 / OWASP Japan
1. ã¯ããã« æè¿ãããã£ã¦Nodeã®ã»ãã¥ãªãã£èª¿æ»ããã¦ããã®ã§ãããä»å¹´ã®5æã«éå¬ããã North Sec 2018 ã§ã»ãã¥ãªãã£ç ç©¶è ã® Olivier Arteau æ°ã«ãã ãPrototype pollution attacks in NodeJS applicationsãã¨ããé¢ç½ãçºè¡¨ãè¦ã¤ãã¾ããã ãã®çºè¡¨ã®è«æãçºè¡¨è³æããã¢åç»ãªã©ãgithubã§å ¬éããã¦ãã¾ãããã¡ããã©ã¿ã¤ãã³ã°ããã»ãã·ã§ã³åç»ãæè¿å ¬éããã¾ããã github.com Olivier Arteau -- Prototype pollution attacks in NodeJS applications ãã®çºè¡¨ã§è§£èª¬ããã¦ããã®ã¯ãæªæã®ããæ»æè ããJavaScriptè¨èªåºæã®ãããã¿ã¤ããã§ã¼ã³ã®æåãå©ç¨ãã¦ãWebãµã¼ããæ»æããæ¹æ³ã§ãã çºè¡¨è ã¯ãnpmããã
UIãæããã¹ã¯ãªããããæä½å¯è½ãªWebãã©ã¦ã¶ã®Headless Chromeãå©ç¨ããããã®ãã¬ã¼ã ã¯ã¼ã¯ãPuppeteerãããã¼ã¸ã§ã³1.0ã«å°éãããWebã¢ããªã±ã¼ã·ã§ã³ã®èªåãã¹ããªã©ã«å©ç¨å¯è½ã ã Googleã®Webãã©ã¦ã¶ãChromeãã¯ãã¦ã¼ã¶ã¼ã¤ã³ã¿ã¼ãã§ã¤ã¹ãæããã³ãã³ãã©ã¤ã³ããªã¢ã¼ããããã°æ©è½ãéãã¦Webãã©ã¦ã¶ãæä½ã§ãããHeadless Chromeãæ©è½ãåãã¦ãã¾ãããã®æ©è½ã¯2017å¹´6æã«ãªãªã¼ã¹ããããChrome 59ãããå®ç¾ããããã®ã§ãã Headless Chromeãå©ç¨ããã¨äººéãWebãã©ã¦ã¶ããã¦ã¹ããã¼ãã¼ãã§æä½ãããã¨ãªããããã°ã©ã ã§Headless Chromeãèµ·åããç¹å®ã®Webãã¼ã¸ãèªã¿è¾¼ã¿ãç»é¢ãã£ããã£ã®åå¾ããæå®ãããå ´æãã¯ãªãã¯ããå¤ãå ¥åãçµæãåå¾ãããã¨ãã£ãæä½ãèªåçã«è¡ãã
nspã¨ã¯ å æ¥ãã¾ãã¾ä¼ç¤¾ã§ Vulnerability ã®è©±ã«ãªã£ã¦è²ã 㨠Node.js ã ã¨ããããã®ãããã§ããã£ã¦è¨ã£ããç¥ããªãã£ãæ¹ãå¤ãã£ãã®ã§ç´¹ä»ã nsp 㯠node security platform ã®é æåãåã£ãããã¸ã§ã¯ãã§ããã Node Security Platform ã¯ãµã¤ãä¸ã§èå¼±æ§ãå ¬éãã¦ããã Node.js ã®ã³ã¢ã®èå¼±æ§ã¨ããããã npm ã¢ã¸ã¥ã¼ã«ãªã©ã®ã¢ã¸ã¥ã¼ã«ã®èå¼±æ§ã ã nsp ã«æãããã¦ãèå¼±æ§ã®ä¸ä¾ ä¾ãã°ãã®èå¼±æ§ãªããã¯2017å¹´2æ11æ¥ã«å ¬éãããèå¼±æ§ã§ããã https://nodesecurity.io/advisories/313 github.com ã©ãããèå¼±æ§ãã¨ããã¨ããã®ã¢ã¸ã¥ã¼ã«ã¯JavaScript Objectãã·ãªã¢ã©ã¤ãºããããã®ã¢ã¸ã¥ã¼ã«ã ãããã®serializeããæã«é¢æ°ã¾
2018å¹´4æ25æ¥ããã¡ã¾ãã¦ã ãCodeIQãã®ããã°ã©ãã³ã°è 試ããµã¼ãã¹ãå¹´å確ç´ã¹ã«ã¦ããµã¼ãã¹ã¯ã ITã¨ã³ã¸ãã¢ã®ããã®å¹´å確ç´ã¹ã«ã¦ããµã¼ãã¹ãmoffers by CodeIQãhttps://moffers.jp/ ã¸ä¸æ¬åãããã¾ããã ããã¾ã§å¤ãã®ITã¨ã³ã¸ãã¢ã®æ¹ã«ãCodeIQãããå©ç¨ããã ãã¾ãã¦ã æ¹ãã¦å¿ããæ·±ã御礼ç³ãä¸ãã¾ãã ã¾ããã¨ã³ã¸ãã¢ã®ããã®Webãã¬ã¸ã³ãCodeIQ MAGAZINEãã¯ã ãªã¯ããNEXTã¸ã£ã¼ãã«( https://next.rikunabi.com/journal/ )ã«ä¸é¨ã®è¨äºã®ç§»è¡ãäºå®ãã¦ããã¾ãã ä»å¾ã¯ãmoffers by CodeIQãã«ã¦ã ITã¨ã³ã¸ãã¢ã®çæ§ã®ããè¯ã転è·ããµãã¼ãããããã«ãããä¸å±¤åªãã¦ã¾ããã¾ãã®ã§ã å¼ãç¶ããæé¡§ã®ã»ã©ä½åãããããé¡ãç³ãä¸ãã¾ãã ã¾ããCod
(訳注ï¼2016/1/5ãããã ãã翻訳ãã£ã¼ãããã¯ãå ã«è¨äºãä¿®æ£ãããã¾ããã) ã»ãã¥ãªã㣠â 誰ããè¦ã¦è¦ã¬ãµããããåé¡ ãã»ãã¥ãªãã£ãéè¦ã ã¨ãããã¨ã¯ã誰ããèªèãã¦ããã¨æãã¾ãããçå£ã«ã¨ããã¦ãã人ã¯å°æ°ã ã¨æãã¾ããæã ãRisingStackã¯ãçããã«æ£ããã»ãã¥ãªãã£ãã§ãã¯ãè¡ã£ã¦ããã ãããã¨èãããã§ãã¯ãªã¹ããç¨æãã¾ãããçããã®ã¢ããªã±ã¼ã·ã§ã³ãä½å人ã¨ããã¦ã¼ã¶ãã客æ§ã«ä½¿ç¨ãããåã«ã»ãã¥ãªãã£ãã§ãã¯ãè¡ã£ã¦ãã ããã ããã«æãããªã¹ãã®ã»ã¨ãã©ã¯æ¦ç¥çãªãã®ã§ãNode.jsã«éãããå ¨ã¦ã®è¨èªããã¬ã¼ã ã¯ã¼ã¯ã«é©ç¨ãããã¨ãã§ãã¾ãããã ããããã¤ã®ãã¼ã«ã¯ãNode.jsåºæã®ãã®ã¨ãªãã¾ãã®ã§ããäºæ¿ãã ããã Node.jsã»ãã¥ãªã㣠ã«é¢ããããã°è¨äºãæç¨¿ãã¦ããã¾ãã®ã§ããã¡ããæ¯éèªãã§ã¿ã¦ãã ããã æ§æç®¡ç HT
Production (ã»ãã¥ãªãã£ç·¨)ã¨ãããã¨ã§çãã«ãªããã¡ãªã»ãã¥ãªãã£ã®è©±
ããªãã«ã¨ã£ã¦éè¦ãªãããã¯ãååã®ææ°æ å ±ãå ¥æãã¾ãããææ°ã®æ´å¯ã¨ãã¬ã³ãã«é¢ããææ°æ å ±ãå³åº§ã«åãåãã¾ãããã ç¶ç¶çãªå¦ç¿ã®ããã«ãç¡æã®ãªã½ã¼ã¹ã«æè»½ã«ã¢ã¯ã»ã¹ãã¾ãããããããã¯ããã©ã³ã¹ã¯ãªããä»ãåç»ãããã³ãã¬ã¼ãã³ã°ææã è¨äºãä¿åãã¦ããã¤ã§ãèªããã¨ãã§ãã¾ãè¨äºãããã¯ãã¼ã¯ãã¦ãæºåãã§ããããã¤ã§ãèªãã¾ãã
iOSã¢ããªããUIWebViewãªã©ãä»ããã«node.js+Socket.IOã¨åæ¹åéä¿¡ããããã®ç°¡åãªãµã³ãã«ãç´¹ä»ãã¾ãã ãµã¼ãå´ã®å®è£ iOSã¢ããªããnode.js+Socket.IOéã§åæ¹åéä¿¡ããã«ã¯ãsocket.IO-objcã¨ããã©ã¤ãã©ãªã使ç¨ãã¾ãã ä»åã¯ãµã¼ãå´ã«ã¯å¼ç¤¾ãããã ãæ°ãå ¬éãã¦ããè¨äºã§ä½ã£ããã£ããã¢ããªã使ç¨ãã¾ãã®ã§ãã¾ãã¯ä»¥ä¸ã®è¨äºãåèã«ãã£ããã¢ããªãä½ã£ã¡ãã£ã¦ãã ããã Node + Socket.IO ã§ç°¡åãªãã£ããã¢ããªã®ä½æ ãã£ããã¢ããªã®æºåãçµãã£ãããæ©éiOSã¢ããªå´ã®æºåããã¾ããããããããã¯ä»¥ä¸ã®ç°å¢ãåæã«èª¬æãã¾ãã Mac OS X 10.8 Moutain lion Xcode 4.5.2 iOS SDK 6.0 iOSã¢ããªã®å®è£ ãµã³ãã«ããã¸ã§ã¯ãã®ãã¦ã³ãã¼ã ä»åç´¹ä»ããiOSã¢ããª
BrowserIDã¯Webãµã¼ãã¹ã«ãããèªè¨¼ãçµ±åããã·ã¹ãã ã BrowserIDã¯node.js/JavaScript製ã®ãªã¼ãã³ã½ã¼ã¹ã»ã½ããã¦ã§ã¢ãä»ãWebãµã¼ãã¹ã¯ç¡æ°ã«åå¨ãããã®ä¸ã«ã¯ã¦ã¼ã¶ç»é²ãæ±ãããã®ããããããããé½åº¦å人æ å ±ãç»é²ãããããã¹ã¯ã¼ããè¨å®ããã®ã¯ç ©ãããããã®ããã«ã¦ã¼ã¶ç»é²ãæå¿µããã¨ããã±ã¼ã¹ãå°ãªããªãã BrowserIDã®ç»é¢ ãããªä¸ãèªè¨¼æ å ±ãä»ã®ãµã¤ãã«å§è²ããOpenIDãç»å ´ãããä»ã¯Twitterã®ããã«OAuthã使ã£ã¦èªè¨¼ãè¡ãå ´åãããããããªä¸Mozillaãèãã ããã®ãBrowserIDã ã BrowserIDã¯OpenIDã®ä»²éã®ãããªä»çµã¿ã ãBrowserIDã«ã¦ã¼ã¶ç»é²ï¼ã¨ãããã¡ã¼ã«ã¢ãã¬ã¹ç»é²ï¼ãå§è²ã§ããã使ããµã¤ãã¯JavaScriptãã¡ã¤ã«ãèªã¿è¾¼ãã ãã§è¯ããããã ãã§ãã°ã¤ã³ç¶æ ãææ¡ã§ã
cavadã¯ç°ãªãSNSï¼ç¾ç¶ã¯Facebookã®ã¿ï¼ãçµã³ã¤ããWebãã£ããã·ã¹ãã ã cavadã¯JavaScript/node.js製ã®ããªã¼ã¦ã§ã¢ï¼ã½ã¼ã¹ã³ã¼ãã¯å ¬éããã¦ããï¼ãä»ã®Webã¯ã½ã¼ã·ã£ã«çã£çãã ãã½ã¼ã·ã£ã«ââã¨éæã£ããµã¼ãã¹ãä¹±ç«ããã¿ããªãããã飽ãã¦ãã¦ãããä»ããã½ã¼ã·ã£ã«ââãä½ãã®ã¯ç¡è¬ã ããã ãã£ããç»é¢ ã ãæ°ãã«ä½ããã¨ããæ¢åã®ã½ã¼ã·ã£ã«ç³»ãµã¼ãã¹ã§ã¯OAuthãéãã¦æ§ã ãªãã¼ã¿ãå ¬éãã¦ããããããªWeb APIã使ã£ã¦SNSå士ãã¤ãªãã¦ãã¾ãã®ãcavadã ã cavadã¯Webãã£ãããµã¼ãã¹ã ããç°ãªãSNSéãã¤ãªãã§å©ç¨ã§ãããã¨ãç®æ¨ã¨ãã¦ãããç¾ç¶ã§ã¯Facebookã®ã¿ã¨ãªã£ã¦ãããcavadã«ã¢ã¯ã»ã¹ããã¨ãFacebook Connectãæ±ãããããããã§è¨±å¯ãããã¨cavadã«æ»ãããã£ããã«ã¼ã ã«ãã°ã¤ã³ã§
æ¬ç¨¿ã§ã¯ãNode.jsã®ç¹å¾´ãåä½åçã«è§¦ãããµã³ãã«ãå½¹ã«ç«ã¤ããã±ã¼ã¸ãæ´»ç¨äºä¾ãªã©ãç´¹ä»ãããã¨æãã¾ãã 主ãªãµã¼ããµã¤ãJavaScript Node.jsã«è§¦ããåã«ãäºåç¥èã¨ãã¦ä»ã®ãµã¼ããµã¤ãJavaScriptã«ã触ãã¦ããã¾ããNode.jså«ãããµã¼ããµã¤ãJavaScriptã«ã¯ã主ã«ä»¥ä¸ã®ãããªããã¸ã§ã¯ããããã¾ãã ãµã¼ããµã¤ãJavaScripã®æ¨æºä»æ§ãCommonJSãã¨ã¯ ãµã¼ããµã¤ãJavaScriptã«ã¯ããCommonJSãã¨å¼ã°ããæ¨æºåãçå®ããã¦ãã¾ããæ¨æºåã¨ããã¨é£ããæãããã¾ãããè¦ã¯ãµã¼ããµã¤ãã§JavaScriptãå®è¡ããã®ã«ä½ãå¿ è¦ãã仿§ã¨ãã¦ãå®ç¾©ãã¦ããããã¥ã¡ã³ãã®ãã¨ã§ãï¼ä¾ãã°ãããã°ãå¿ è¦ã ããããªã©ï¼ã Node.jsã¯ããã®CommonJSã«åã£ã¦éçºããã¦ãã¾ããç¾æ®µéã§ããã°ãCommonJSã®ä»æ§
ããã°ã©ãã³ã°å¦ç¿ãµã¼ãã¹ã®éå¶ãGTDã®ç£è¨³ãå°ç²ãªiOSã¢ããªã®éçºãã¨ãã©ãã©ã¤ãããã¯ãæç« ã¯AIã§æ¸ãã¦ã¾ããï¼è©³ãããããã£ã¼ã«ï¼ã
Live coderã¯Webãã©ã¦ã¶ä¸ã§ã³ã¼ãã£ã³ã°ãããããä»ã®ã¦ã¼ã¶ãé²è¦§ããã£ããã§ããã½ããã¦ã§ã¢ã Live coderã¯node.js製ã®ããªã¼ã¦ã§ã¢ï¼ã½ã¼ã¹ã³ã¼ãã¯å ¬éããã¦ããï¼ãåªç§ãªäººãæ¸ãã¦ããã³ã¼ããå¾ãããè¦ãã®ã¯é¢ç½ããã¿ãã¿ãéã«ã·ã¹ãã ãä½ããã¦ããã®ã¯çå¿«ã§ããããã¤ãã³ããåå¼·ä¼ã§å®éã«ã³ã¼ããæ¸ãã¦åããè¦ãã¤ã¤ã¹ãããã¢ãããã¦ããã®ã¯äººæ°ãããã Webä¸ã§ã³ã¼ãã£ã³ã° ã³ã¼ããæ¸ãã¤ã¤ãããã«äººã®ããã³ããåãããã試è¡é¯èª¤ããªããä½ã£ã¦ããã®ã¯åµé çã§é¢ç½ãã¹ã¿ã¤ã«ã ããããå®ç¾ããã®ãã©ã¤ãã³ã¼ãã£ã³ã°ã§ããããã®ããã®ã·ã¹ãã ãLive coderã«ãªãã Live coderã¯node.jsã¨WebSocketãçµã¿åããã¦ã³ã¼ãã£ã³ã°ããã¦ããæ§åããªã¢ã«ã¿ã¤ã ã«è¦ãããããã«ãªã£ã¦ãããã³ã¼ãã¼ã¯ä¸äººã§ãã³ã¼ããã¤ã©ã¤ãå¦çãããã¨ãª
naveã¯è¤æ°ãã¼ã¸ã§ã³ã®node.jsã管çãåãæ¿ããããã®ã½ããã¦ã§ã¢ã naveã¯Bash製ã®ããªã¼ã¦ã§ã¢ï¼ã½ã¼ã¹ã³ã¼ãã¯å ¬éããã¦ããï¼ãä»ãnode.jsãç±ããåä½ãé«éã§ããã®å 鲿§ããã£ã¦HTML5ãWebSocketãªã©ã®æ°ããæè¡ãçå çã«è©¦ããã¦ãããä»ã¯ã¾ã ãã¤ãã¼ãããããªãããä»ããåãçµãã§ããã¦æã¯ãªãã¯ãã ã ãªã¢ã¼ãã®ãã¼ã¸ã§ã³ä¸è¦§ ãããªnode.jsã¯éçºãã¨ã¦ãçãã§ããããã«ã©ãã©ããã¼ã¸ã§ã³ã¢ãããç¶ãã¦ããããã®ããææ°çãã¤ã³ã¹ãã¼ã«ãããã¨æãã¨ã½ã¼ã¹ããããã§ããããã®ããã«ç°ãªããã¼ã¸ã§ã³ã使ããªããªã£ããããããããé²ãããã«ãnaveã使ããã naveã¯Rubyã§ããrvmãPythonã§ããvirtualenvã®ããã«ç°ãªããã¼ã¸ã§ã³ã®node.jsãä¸ã¤ã®PCä¸ã§ä½¿ããããã«ããããªã¢ã¼ãã«ãããã¼ã¸ã§ã³ãä¸è¦§ãããããã
Express on railwayã¯node.jsç¨ã®Rails風Webã¢ããªã±ã¼ã·ã§ã³ãã¬ã¼ã ã¯ã¼ã¯ã Express on railwayã¯JavaScritp/node.js製ã®ããªã¼ã¦ã§ã¢ï¼ã½ã¼ã¹ã³ã¼ãã¯å ¬éããã¦ããï¼ãRubyã¯å ã åªç§ãªè¨èªã§ãã£ãããããæ°å¹´ã®ççºçãªæ®åã«ã¯Ruby on Railsã®åå¨ããã£ãã¨ããã®ã¯ééããªãã ããã ããã¸ã§ã¯ãéå§ ã©ããªã«ããã°ã©ãã³ã°è¨èªãåªãã¦ãã¦ãããã©ã¼ã¢ããªã±ã¼ã·ã§ã³ã«ãªããã®ãå¿ è¦ãªã®ã ãããã¯node.jsã«ã¤ãã¦ãåãããç¥ããªããnode.jsã«ãããRailsçåå¨ããã®å¯è½æ§ãæããããã®ãExpress on railwayã ã Express on railwayã¯Ruby on Railsãçä¼¼ãnode.jsç¨Webãã¬ã¼ã ã¯ã¼ã¯ã ãã¾ãããã¸ã§ã¯ããçæããæ©è½ã使ãã¨ãapp/config/
pdf.jsã¯node.js/JavaScriptã§ä½ãããPDFçæã©ã¤ãã©ãªãã¯ã©ã¤ã¢ã³ããµã¤ãã®åºåã«ã対å¿ã pdf.jsã¯JavaScript/node.js製ã®ããªã¼ã¦ã§ã¢ï¼ã½ã¼ã¹ã³ã¼ãã¯å ¬éããã¦ããï¼ãåºå¹¹ç³»ãã¦ã¼ã¶ç³»åããä½ããã®ãã¼ã¿ãèç©ããçµæãä¸è¦§ãã¬ãã¼ããåºåãããã¨ããè¦æã¯å¤ã çºçããããã®ãã©ã¼ãããã¨ãã¦ä»£è¡¨çãªã®ãPDFã ã ãã©ã¦ã¶ã®ã¿ã§çæãããPDF PDFã¯ä»æ§ãå ¬éããã¦ããã¨ã¯è¨ããä¸ããæä½æ¥ã§ä½ãã®ã¯é常ã«é¢åãªãã©ã¼ãããã ãããã§æ¢åã®PDFã©ã¤ãã©ãªã使ããããPHPãRubyãJavaãªã©å種è¨èªåãã«PDFã©ã¤ãã©ãªãåå¨ããããJavaScriptã§ã¯ã©ãã ããããããpdf.jsã使ãã°è¯ãã pdf.jsã¯ãã®åã®éãJavaScriptã使ã£ã¦PDFãçæããã©ã¤ãã©ãªã ãããæ¹ã¯äºç¨®é¡ãããä¸ã¤ã¯å®å ¨ã¯ã©ã¤ã¢ã³ããµ
maptail.jsã¯ã¢ã¯ã»ã¹ãã°ããªã¢ã«ã¿ã¤ã ã«å°å³ä¸ã¸ãããã³ã°ããã½ããã¦ã§ã¢ã maptail.jsã¯JavaScript/node.js製ã®ãªã¼ãã³ã½ã¼ã¹ã»ã½ããã¦ã§ã¢ãnode.jsã«æ³¨ç®ãéã¾ã£ã¦ãããæ§ã ãªã½ããã¦ã§ã¢ãæ¥ã éçºããã¦ãã¦ããã®ã©ãããæ°ããæè¡ãç©æ¥µçã«åãå ¥ãã¦ãããä¾ãã°HTML5ã ã ãããªã«å¥éºã« HTML5ã使ãã°ã©ããªãã¨ãã§ããã®ããããã¯å®éã«ã§ãããã£ããã®ãè¦ã¦ã¿ãã®ãä¸çªåãããããã¯ãã ããã®ä¾ã¨ãã¦ç´¹ä»ãããã®ãmaptail.jsã«ãªããMapã¨Tailãçµã¿åããããã®ã½ããã¦ã§ã¢ã¯node.js/HTML5ãç¥ãä¸ã§ãã£ã¨é¢ç½ãã¯ãã ã maptail.jsãèµ·åããæã«ã¯ä½ããã®ãã°ãã¡ã¤ã«ï¼é常ã¯ã¢ã¯ã»ã¹ãã°ï¼ãæå®ãã¦å®è¡ãããããããã¨ã¢ã¯ã»ã¹ãã°ããªã¢ã«ã¿ã¤ã ã«è§£æããIPã¢ãã¬ã¹ããä½ç½®æ å ±ãåå¾ãã¦å°å³ä¸ã«ãã
node-http-proxyã¯node.jsã§éçºãããHTTPãããã·ãµã¼ãã node-http-proxyã¯JavaScript/node.js製ã®ãªã¼ãã³ã½ã¼ã¹ã»ã½ããã¦ã§ã¢ãéçºæã«å ¬éç¨ãµã¼ãã§ã¯ãªãããã¼ã«ã«ã¾ãã¯èªç¤¾å ã®ãã¹ãç¨ãµã¼ãã«æ¥ç¶ãã¦è¡ãã±ã¼ã¹ã¯å¤ã ããããããªæã«ããå°è¦æ¨¡ãªãã¼ã ãªãhostsãã¡ã¤ã«ãæ¸ãæãã¦å¯¾å¿ã§ããã ããã ã ãè¤æ°ã®ããã¸ã§ã¯ããå¹³è¡ãã¦ãããã人æ°ãå¤ããªãã¨ãã®ãããªå¯¾å¿ã§ã¯é¢åã«ãªãããç¥ããªãããããªæã«ã¯ãããã·ãç«ã¦ã¦ãè¨å®ããããã·ãµã¼ãã«ä¾åãã¦ãã¾ãã®ãè¯ãããã ãã«ã¹ã¿ãã¤ãºãæè»ãªãããã·ã¨ãã¦node-http-proxyãç´¹ä»ãããã node-http-proxyã¯ã¾ãã«ããããå°è¦æ¨¡ãªãããã¯ã¼ã¯æ¥ç¶ã代è¡ããã®ã«ã¡ããã©è¯ããµã¤ãºã ãHTTPãã¼ã¹ã®ãããã·ãµã¼ãã¨ãã¦åä½ããåºæ¬çã«ã¯æãããããªã¯
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}