{"_id":"csurf","_rev":"61092","name":"csurf","description":"CSRF token middleware","dist-tags":{"latest":"1.11.0"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"time":{"modified":"2021-06-03T10:20:41.000Z","created":"2013-05-15T22:46:29.785Z","1.11.0":"2020-01-19T04:28:49.953Z","1.10.0":"2019-04-23T01:54:16.280Z","1.9.0":"2016-05-27T17:21:12.007Z","1.8.3":"2015-06-11T01:22:47.846Z","1.8.2":"2015-05-10T03:41:16.799Z","1.8.1":"2015-05-04T01:42:18.838Z","1.8.0":"2015-04-08T03:17:48.706Z","1.7.0":"2015-02-15T23:20:30.690Z","1.6.6":"2015-02-01T06:34:58.400Z","1.6.5":"2015-01-09T02:07:27.867Z","1.6.4":"2014-12-30T22:59:30.429Z","1.6.3":"2014-11-09T22:02:51.614Z","1.6.2":"2014-10-14T23:25:49.515Z","1.6.1":"2014-09-06T04:50:13.879Z","1.6.0":"2014-09-04T03:52:17.930Z","1.5.0":"2014-08-24T18:24:15.043Z","1.4.1":"2014-08-22T08:39:26.460Z","1.4.0":"2014-07-30T17:42:29.365Z","1.3.0":"2014-07-04T01:01:49.036Z","1.2.2":"2014-06-18T09:22:43.672Z","1.2.1":"2014-06-08T22:05:51.342Z","1.2.0":"2014-05-13T16:09:50.903Z","1.1.0":"2014-04-06T10:42:50.611Z","1.0.0":"2014-03-05T06:45:35.143Z","0.1.2":"2013-09-03T04:16:19.735Z","0.1.1":"2013-08-31T06:37:53.844Z","0.1.0":"2013-08-17T02:07:14.909Z","0.0.2":"2013-05-21T00:40:12.306Z","0.0.1":"2013-05-15T22:46:29.785Z"},"users":{"291296283":true,"sovente":true,"tomi77":true,"zeropaper":true,"ycloud":true,"devonning":true,"pmuellr":true,"clunt":true,"lucasmciruzzi":true,"volkanongun":true,"x_soth":true,"wagnercsfilho":true,"flyslow":true,"damer":true,"wangnan0610":true,"goodseller":true,"dongxu":true,"abimohiosen":true,"sanketss84":true,"swapnil_mishra":true,"blue_bear_94":true,"freshlogic":true,"ugarz":true,"jessaustin":true,"m412c0":true,"karlbateman":true,"markthethomas":true,"honzajde":true,"kparkov":true,"viktorivanov":true,"monkeymonk":true,"vwal":true,"jonatasnona":true,"yash3492":true,"erincinci":true,"vteixeira":true,"andrew.medvedev":true,"hckhanh":true,"shadowlong":true,"kobleistvan":true,"csbun":true,"vbv":true,"tobiasnickel":true,"milfromoz":true,"dbck":true,"brightchen":true,"ristostevcev":true,"evan2x":true,"sammok2003":true,"nickeltobias":true,"itskdk":true,"52u":true,"igorissen":true,"wzbg":true,"dkblay":true,"mrbgit":true,"lestad":true,"markstos":true,"marcobiedermann":true,"koskokos":true,"mobeicaoyuan":true,"apopek":true,"ivan.marquez":true,"jmsherry":true,"oleg_tsyba":true,"kistoryg":true,"mr-smiley":true,"khurshedyu":true,"antixrist":true,"tehmachine":true,"utkarsh85":true,"lonjoy":true,"spad":true,"hitalos":true,"danielrhayes":true,"mxmn":true,"chirag8642":true,"jabedhasan21":true,"andrao":true,"giussa_dan":true,"miloc":true,"panlw":true,"wangfeia":true,"jon_shen":true,"rocket0191":true,"jirqoadai":true,"qafir":true,"netoperatorwibby":true,"paraself":true,"mhaidarh":true,"nonthasart":true,"joseph320":true,"frankl83":true,"raycharles":true,"rmanalan":true,"martinspinks":true,"alek-s":true,"arnoldask":true,"asaupup":true,"largepuma":true,"bianlongting":true,"vishwasc":true,"nuwaio":true,"jamesbedont":true,"ngpvnk":true,"stormcrows":true,"fahri5567":true,"donecharlton":true,"terillos":true,"nsaboo":true,"laoshaw":true,"iusfof":true,"asadm2706":true,"pengxiaohua2017":true,"ashco":true,"ryaned":true,"shivayl":true,"ricardweii":true,"vchouhan":true,"modood":true,"horrorandtropics":true,"henriesteves":true,"nemanjapetrovic":true,"elycruz":true,"isayme":true,"ooade":true,"zrisha":true},"author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"repository":{"type":"git","url":"git+https://github.com/expressjs/csurf.git"},"versions":{"1.11.0":{"name":"csurf","description":"CSRF token middleware","version":"1.11.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/expressjs/csurf.git"},"dependencies":{"cookie":"0.4.0","cookie-signature":"1.0.6","csrf":"3.1.0","http-errors":"~1.7.3"},"devDependencies":{"body-parser":"1.19.0","connect":"3.7.0","cookie-parser":"1.4.4","cookie-session":"1.4.0","eslint":"6.8.0","eslint-config-standard":"14.1.0","eslint-plugin-import":"2.20.0","eslint-plugin-markdown":"1.0.1","eslint-plugin-node":"11.0.0","eslint-plugin-promise":"4.2.1","eslint-plugin-standard":"4.0.1","mocha":"7.0.0","nyc":"15.0.0","supertest":"4.0.2"},"engines":{"node":">= 0.8.0"},"scripts":{"lint":"eslint --plugin markdown --ext js,md .","test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"nyc --reporter=html --reporter=text npm test","test-travis":"nyc --reporter=text npm test"},"keywords":["csrf","tokens","middleware","express"],"gitHead":"daaeb5da05f64701175be8546b4a38fd3677a9ab","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf#readme","_id":"csurf@1.11.0","_nodeVersion":"13.6.0","_npmVersion":"6.13.4","dist":{"shasum":"ab0c3c6634634192bd3d6f4b861be20800eeb61a","size":8368,"noattachment":false,"key":"/csurf/-/csurf-1.11.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.11.0.tgz"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/csurf_1.11.0_1579408129787_0.9663320548466672"},"_hasShrinkwrap":false,"publish_time":1579408129953,"_cnpm_publish_time":1579408129953},"1.10.0":{"name":"csurf","description":"CSRF token middleware","version":"1.10.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/expressjs/csurf.git"},"dependencies":{"cookie":"0.3.1","cookie-signature":"1.0.6","csrf":"3.1.0","http-errors":"~1.7.2"},"devDependencies":{"body-parser":"1.18.3","connect":"3.6.6","cookie-parser":"1.4.4","cookie-session":"1.3.3","eslint":"5.16.0","eslint-config-standard":"12.0.0","eslint-plugin-import":"2.16.0","eslint-plugin-markdown":"1.0.0","eslint-plugin-node":"8.0.1","eslint-plugin-promise":"4.1.1","eslint-plugin-standard":"4.0.0","mocha":"6.1.4","nyc":"14.0.0","supertest":"4.0.2"},"engines":{"node":">= 0.8.0"},"scripts":{"lint":"eslint --plugin markdown --ext js,md .","test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"nyc --reporter=html --reporter=text npm test","test-travis":"nyc --reporter=text npm test"},"keywords":["csrf","tokens","middleware","express"],"gitHead":"248112a42f36fc9a84a71b0f5d383a1e03813f54","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf#readme","_id":"csurf@1.10.0","_npmVersion":"6.4.1","_nodeVersion":"8.15.1","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"dist":{"shasum":"c3bafb66ff218a7b61ad09f39e85edb2ee818b7f","size":8130,"noattachment":false,"key":"/csurf/-/csurf-1.10.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.10.0.tgz"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/csurf_1.10.0_1555984456154_0.21669648113834117"},"_hasShrinkwrap":false,"publish_time":1555984456280,"_cnpm_publish_time":1555984456280},"1.9.0":{"name":"csurf","description":"CSRF token middleware","version":"1.9.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.3.1","cookie-signature":"1.0.6","csrf":"~3.0.3","http-errors":"~1.5.0"},"devDependencies":{"body-parser":"1.15.1","connect":"3.4.1","cookie-parser":"1.4.3","cookie-session":"~1.1.0","eslint":"2.10.2","eslint-config-standard":"5.3.1","eslint-plugin-promise":"1.3.1","eslint-plugin-standard":"1.3.2","istanbul":"0.4.3","mocha":"2.5.3","supertest":"1.1.0"},"engines":{"node":">= 0.8.0"},"scripts":{"lint":"eslint **/*.js","test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"6359a0298e1e3e937abb96c21958b2a4419d0301","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.9.0","_shasum":"49d2c6925ffcec7b7de559597c153fa533364133","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"49d2c6925ffcec7b7de559597c153fa533364133","size":7035,"noattachment":false,"key":"/csurf/-/csurf-1.9.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.9.0.tgz"},"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/csurf-1.9.0.tgz_1464369669689_0.553399148164317"},"directories":{},"publish_time":1464369672007,"_cnpm_publish_time":1464369672007,"_hasShrinkwrap":false},"1.8.3":{"name":"csurf","description":"CSRF token middleware","version":"1.8.3","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.3","cookie-signature":"1.0.6","csrf":"~3.0.0","http-errors":"~1.3.1"},"devDependencies":{"body-parser":"~1.12.4","connect":"3","cookie-parser":"~1.3.5","cookie-session":"~1.1.0","istanbul":"0.3.15","mocha":"2.2.5","supertest":"1.0.1"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"3ebc176634b1a93ee4601a1c1929c0014d65e5ce","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.8.3","_shasum":"23f2a13bf1d8fce1d0c996588394442cba86a56a","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"23f2a13bf1d8fce1d0c996588394442cba86a56a","size":6139,"noattachment":false,"key":"/csurf/-/csurf-1.8.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.8.3.tgz"},"directories":{},"publish_time":1433985767846,"_cnpm_publish_time":1433985767846,"_hasShrinkwrap":false},"1.8.2":{"name":"csurf","description":"CSRF token middleware","version":"1.8.2","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.6","csrf":"~3.0.0","http-errors":"~1.3.1"},"devDependencies":{"body-parser":"~1.12.3","connect":"3","cookie-parser":"~1.3.4","cookie-session":"~1.1.0","istanbul":"0.3.9","mocha":"~2.2.4","supertest":"~0.15.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"042f00c9239de2865ea202a2c393f67e45172409","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.8.2","_shasum":"2c8dba733a007d426f2bf003b1601ee9d71274aa","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"2c8dba733a007d426f2bf003b1601ee9d71274aa","size":6111,"noattachment":false,"key":"/csurf/-/csurf-1.8.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.8.2.tgz"},"directories":{},"publish_time":1431229276799,"_cnpm_publish_time":1431229276799,"_hasShrinkwrap":false},"1.8.1":{"name":"csurf","description":"CSRF token middleware","version":"1.8.1","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.6","csrf":"~2.0.7","http-errors":"~1.3.1"},"devDependencies":{"body-parser":"~1.12.3","connect":"3","cookie-parser":"~1.3.4","cookie-session":"~1.1.0","istanbul":"0.3.9","mocha":"~2.2.4","supertest":"~0.15.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"5666b4274c1c5a0c8ff41f6ca6d3b6893a23660e","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.8.1","_shasum":"ad6028f82644d5a96d0d42bd24fd22191308ca1d","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"ad6028f82644d5a96d0d42bd24fd22191308ca1d","size":6096,"noattachment":false,"key":"/csurf/-/csurf-1.8.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.8.1.tgz"},"directories":{},"publish_time":1430703738838,"_cnpm_publish_time":1430703738838,"_hasShrinkwrap":false},"1.8.0":{"name":"csurf","description":"CSRF token middleware","version":"1.8.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.6","csrf":"~2.0.6","http-errors":"~1.3.1"},"devDependencies":{"body-parser":"~1.12.2","connect":"3","cookie-parser":"~1.3.4","cookie-session":"~1.1.0","istanbul":"0.3.5","mocha":"~2.2.1","supertest":"~0.15.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"086097b3b9762df3d865aff3a0e3fc286a6a53a8","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.8.0","_shasum":"5a1886ec9f77ce640a2871c96a9cf5e94a9d7e07","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"5a1886ec9f77ce640a2871c96a9cf5e94a9d7e07","size":6037,"noattachment":false,"key":"/csurf/-/csurf-1.8.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.8.0.tgz"},"directories":{},"publish_time":1428463068706,"_cnpm_publish_time":1428463068706,"_hasShrinkwrap":false},"1.7.0":{"name":"csurf","description":"CSRF token middleware","version":"1.7.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.6","csrf":"~2.0.6","http-errors":"~1.3.1"},"devDependencies":{"body-parser":"~1.12.0","connect":"3","cookie-parser":"~1.3.4","cookie-session":"~1.1.0","istanbul":"0.3.5","mocha":"~2.1.0","supertest":"~0.15.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"9f86080d778d43a04f50c1e19716023cc8aab19f","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.7.0","_shasum":"f24dc53753fccbdce0505f2abc5b57167b65ff18","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"f24dc53753fccbdce0505f2abc5b57167b65ff18","size":5679,"noattachment":false,"key":"/csurf/-/csurf-1.7.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.7.0.tgz"},"directories":{},"publish_time":1424042430690,"_cnpm_publish_time":1424042430690,"_hasShrinkwrap":false},"1.6.6":{"name":"csurf","description":"CSRF token middleware","version":"1.6.6","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.5","csrf":"~2.0.5","http-errors":"~1.2.8"},"devDependencies":{"body-parser":"~1.11.0","connect":"3","cookie-parser":"~1.3.3","cookie-session":"~1.1.0","istanbul":"0.3.5","mocha":"~2.1.0","supertest":"~0.15.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"d46699005b80600e5e6dd07aac91ba26363c6d4e","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.6.6","_shasum":"fc4b1aa293f65da87731c049350d01b25bda3ece","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"fc4b1aa293f65da87731c049350d01b25bda3ece","size":4944,"noattachment":false,"key":"/csurf/-/csurf-1.6.6.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.6.6.tgz"},"directories":{},"publish_time":1422772498400,"_cnpm_publish_time":1422772498400,"_hasShrinkwrap":false},"1.6.5":{"name":"csurf","description":"CSRF token middleware","version":"1.6.5","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.5","csrf":"~2.0.4","http-errors":"~1.2.8"},"devDependencies":{"body-parser":"~1.10.0","connect":"3","cookie-parser":"~1.3.3","cookie-session":"~1.1.0","istanbul":"0.3.5","mocha":"~2.1.0","supertest":"~0.15.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"40f6128003c68dad26bf97995d4f3a51346dce40","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.6.5","_shasum":"da67819fd73d44be3553f5ad1362497264a658ad","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"da67819fd73d44be3553f5ad1362497264a658ad","size":4848,"noattachment":false,"key":"/csurf/-/csurf-1.6.5.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.6.5.tgz"},"directories":{},"publish_time":1420769247867,"_cnpm_publish_time":1420769247867,"_hasShrinkwrap":false},"1.6.4":{"name":"csurf","description":"CSRF token middleware","version":"1.6.4","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.5","csrf":"~2.0.3","http-errors":"~1.2.8"},"devDependencies":{"body-parser":"~1.10.0","connect":"3","cookie-parser":"~1.3.3","cookie-session":"~1.1.0","istanbul":"0.3.5","mocha":"~2.1.0","supertest":"~0.15.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"7306540624093429b97d85ad5205c8684b98be3c","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.6.4","_shasum":"931aab30824f769f6af80be747c8edf81409c9b8","_from":".","_npmVersion":"1.4.28","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"931aab30824f769f6af80be747c8edf81409c9b8","size":4816,"noattachment":false,"key":"/csurf/-/csurf-1.6.4.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.6.4.tgz"},"directories":{},"publish_time":1419980370429,"_cnpm_publish_time":1419980370429,"_hasShrinkwrap":false},"1.6.3":{"name":"csurf","description":"CSRF token middleware","version":"1.6.3","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.5","csrf":"~2.0.2","http-errors":"~1.2.7"},"devDependencies":{"body-parser":"~1.9.2","connect":"3","cookie-parser":"~1.3.3","cookie-session":"~1.1.0","istanbul":"0.3.2","mocha":"~2.0.1","supertest":"~0.14.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"1ad4dc9594aceb3a644ed82c816aececf9831145","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.6.3","_shasum":"042e4d5d4ff02507f24df4fb5252393915cd6d44","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"042e4d5d4ff02507f24df4fb5252393915cd6d44","size":4624,"noattachment":false,"key":"/csurf/-/csurf-1.6.3.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.6.3.tgz"},"directories":{},"publish_time":1415570571614,"_cnpm_publish_time":1415570571614,"_hasShrinkwrap":false},"1.6.2":{"name":"csurf","description":"CSRF token middleware","version":"1.6.2","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.5","csrf":"~2.0.1","http-errors":"~1.2.6"},"devDependencies":{"body-parser":"~1.8.0","connect":"3","cookie-parser":"~1.3.3","cookie-session":"~1.0.2","istanbul":"0.3.2","mocha":"~1.21.3","should":"~4.0.4","supertest":"~0.14.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"eb9be9d7914de6842b8292e4e50c97599d9f9180","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.6.2","_shasum":"e732b7478b4bef654337fd8bb363d0422a71d9f1","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"e732b7478b4bef654337fd8bb363d0422a71d9f1","size":4610,"noattachment":false,"key":"/csurf/-/csurf-1.6.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.6.2.tgz"},"directories":{},"publish_time":1413329149515,"_cnpm_publish_time":1413329149515,"_hasShrinkwrap":false},"1.6.1":{"name":"csurf","description":"CSRF token middleware","version":"1.6.1","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.5","csrf":"~2.0.1"},"devDependencies":{"body-parser":"~1.8.0","connect":"3","cookie-parser":"~1.3.3","cookie-session":"~1.0.2","istanbul":"0.3.2","mocha":"~1.21.3","should":"~4.0.4","supertest":"~0.13.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"fb69d592c265764184744dd764d878a6dc83bd0c","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.6.1","_shasum":"78da376f016bcaa48275d553d133585e478f4054","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"78da376f016bcaa48275d553d133585e478f4054","size":4227,"noattachment":false,"key":"/csurf/-/csurf-1.6.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.6.1.tgz"},"directories":{},"publish_time":1409979013879,"_cnpm_publish_time":1409979013879,"_hasShrinkwrap":false},"1.6.0":{"name":"csurf","description":"CSRF token middleware","version":"1.6.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.4","csrf":"~2.0.1"},"devDependencies":{"body-parser":"~1.7.0","connect":"3","cookie-parser":"~1.3.1","cookie-session":"~1.0.2","istanbul":"0.3.0","mocha":"~1.21.3","should":"~4.0.4","supertest":"~0.13.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"a74049210724ea4e8ca8293525be43eddc5812b5","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.6.0","_shasum":"07d6e6cea2eb712be42fed0e5967c8e570852ee5","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"07d6e6cea2eb712be42fed0e5967c8e570852ee5","size":4203,"noattachment":false,"key":"/csurf/-/csurf-1.6.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.6.0.tgz"},"directories":{},"publish_time":1409802737930,"_cnpm_publish_time":1409802737930,"_hasShrinkwrap":false},"1.5.0":{"name":"csurf","description":"CSRF token middleware","version":"1.5.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.4","csrf":"~2.0.1"},"devDependencies":{"body-parser":"~1.5.2","connect":"3","cookie-parser":"~1.3.1","cookie-session":"~1.0.2","istanbul":"0.3.0","mocha":"~1.21.3","should":"~4.0.4","supertest":"~0.13.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["HISTORY.md","LICENSE","index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"c5c185780f8c62670f25c44ea8cf9a1fa235075c","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.5.0","_shasum":"d60ce144164974f14d219ba0cb29b0743e1cc594","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"d60ce144164974f14d219ba0cb29b0743e1cc594","size":4063,"noattachment":false,"key":"/csurf/-/csurf-1.5.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.5.0.tgz"},"directories":{},"publish_time":1408904655043,"_cnpm_publish_time":1408904655043,"_hasShrinkwrap":false},"1.4.1":{"name":"csurf","description":"CSRF token middleware","version":"1.4.1","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.4","csrf":"~2.0.1"},"devDependencies":{"body-parser":"~1.5.2","connect":"3","cookie-parser":"~1.3.1","cookie-session":"~1.0.2","istanbul":"0.3.0","mocha":"~1.21.3","should":"~4.0.4","supertest":"~0.13.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"files":["index.js"],"keywords":["csrf","tokens","middleware","express"],"gitHead":"4303657bf2778928aa21148e5323e6629d19e57f","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.4.1","_shasum":"0ccaf026992b2d218771d6174f5c6c402a6289fd","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"0ccaf026992b2d218771d6174f5c6c402a6289fd","size":2997,"noattachment":false,"key":"/csurf/-/csurf-1.4.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.4.1.tgz"},"directories":{},"publish_time":1408696766460,"_cnpm_publish_time":1408696766460,"_hasShrinkwrap":false},"1.4.0":{"name":"csurf","description":"CSRF token middleware","version":"1.4.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"contributors":[{"name":"Douglas Christopher Wilson","email":"doug@somethingdoug.com"}],"license":"MIT","repository":{"type":"git","url":"git://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.4","csrf-tokens":"~2.0.0"},"devDependencies":{"body-parser":"~1.5.2","connect":"3","cookie-parser":"~1.3.1","cookie-session":"~1.0.2","istanbul":"0.3.0","mocha":"~1.21.3","should":"~4.0.4","supertest":"~0.13.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.4.0","dist":{"shasum":"035628ab6644d7709ac9d1adc78ef05a2d576efe","size":3700,"noattachment":false,"key":"/csurf/-/csurf-1.4.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.4.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1406742149365,"_cnpm_publish_time":1406742149365,"_hasShrinkwrap":false},"1.3.0":{"name":"csurf","description":"CSRF token middleware","version":"1.3.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"license":"MIT","repository":{"type":"git","url":"git://github.com/expressjs/csurf"},"dependencies":{"cookie":"0.1.2","cookie-signature":"1.0.4","csrf-tokens":"~2.0.0"},"devDependencies":{"body-parser":"~1.3.0","connect":"3","cookie-parser":"~1.3.1","cookie-session":"~1.0.2","istanbul":"0.2.14","mocha":"~1.20.1","should":"~4.0.4","supertest":"~0.13.0"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"mocha --check-leaks --reporter spec --bail test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot test/","test-travis":"istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec test/"},"bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.3.0","dist":{"shasum":"d1aea616095e5178355a01bde4d811082fb842ff","size":3440,"noattachment":false,"key":"/csurf/-/csurf-1.3.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.3.0.tgz"},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"dougwilson","email":"doug@somethingdoug.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1404435709036,"_cnpm_publish_time":1404435709036,"_hasShrinkwrap":false},"1.2.2":{"name":"csurf","description":"CSRF token middleware","version":"1.2.2","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"license":"MIT","repository":{"type":"git","url":"git://github.com/expressjs/csurf"},"dependencies":{"csrf-tokens":"~2.0.0"},"devDependencies":{"cookie-session":"*","body-parser":"*","cookie-parser":"*","mocha":">= 1.17.0 < 2","should":">= 3.0.0 < 4","supertest":"*","connect":"*"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"NODE_ENV=test mocha --reporter spec --require should"},"bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.2.2","_shasum":"2ea9f2d3f2d67b1e2253290e676b62195dcb7756","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"2ea9f2d3f2d67b1e2253290e676b62195dcb7756","size":3001,"noattachment":false,"key":"/csurf/-/csurf-1.2.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.2.2.tgz"},"directories":{},"publish_time":1403083363672,"_cnpm_publish_time":1403083363672,"_hasShrinkwrap":false},"1.2.1":{"name":"csurf","description":"CSRF token middleware","version":"1.2.1","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"license":"MIT","repository":{"type":"git","url":"git://github.com/expressjs/csurf"},"dependencies":{"csrf-tokens":"~1.0.2"},"devDependencies":{"cookie-session":"*","body-parser":"*","cookie-parser":"*","mocha":">= 1.17.0 < 2","should":">= 3.0.0 < 4","supertest":"*","connect":"*"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"make test"},"bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.2.1","_shasum":"3928fa237592ed5824a7c221d8581bf356a9da76","_from":".","_npmVersion":"1.4.9","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"dist":{"shasum":"3928fa237592ed5824a7c221d8581bf356a9da76","size":3038,"noattachment":false,"key":"/csurf/-/csurf-1.2.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.2.1.tgz"},"directories":{},"publish_time":1402265151342,"_cnpm_publish_time":1402265151342,"_hasShrinkwrap":false},"1.2.0":{"name":"csurf","description":"CSRF token middleware","version":"1.2.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"license":"MIT","repository":{"type":"git","url":"git://github.com/expressjs/csurf"},"dependencies":{"uid2":"~0.0.2","scmp":"~0.0.3"},"devDependencies":{"cookie-session":"*","body-parser":"*","cookie-parser":"*","mocha":">= 1.17.0 < 2","should":">= 3.0.0 < 4","supertest":"*","connect":"*"},"engines":{"node":">= 0.8.0"},"scripts":{"test":"make test"},"bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.2.0","dist":{"shasum":"56d1d1e921a4027e6adf87f51e706b825c74ab13","size":3450,"noattachment":false,"key":"/csurf/-/csurf-1.2.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.2.0.tgz"},"_from":"https://github.com/expressjs/csurf/tarball/1.2.0","_resolved":"https://github.com/expressjs/csurf/tarball/1.2.0","_npmVersion":"1.4.3","_npmUser":{"name":"mscdex","email":"mscdex@mscdex.net"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1399997390903,"_hasShrinkwrap":false,"_cnpm_publish_time":1399997390903},"1.1.0":{"name":"csurf","description":"CSRF token middleware","version":"1.1.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"license":"MIT","repository":{"type":"git","url":"git://github.com/expressjs/csurf"},"dependencies":{"uid2":"~0.0.2","scmp":"~0.0.3"},"devDependencies":{"cookie-session":"*","body-parser":"*","mocha":"^1.17.0","should":"^3.0.0","supertest":"*","connect":"*"},"scripts":{"test":"make test"},"bugs":{"url":"https://github.com/expressjs/csurf/issues"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.1.0","dist":{"shasum":"5dd459df40df43b9eb828284d6d03132f42cb8b2","size":2936,"noattachment":false,"key":"/csurf/-/csurf-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.1.0.tgz"},"_from":".","_npmVersion":"1.4.6","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1396780970611,"_cnpm_publish_time":1396780970611,"_hasShrinkwrap":false},"1.0.0":{"name":"csurf","description":"CSRF token middleware","version":"1.0.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/expressjs/csurf.git"},"bugs":{"url":"https://github.com/expressjs/csurf/issues"},"dependencies":{"uid2":"~0.0.2"},"devDependencies":{"cookie-session":"*","body-parser":"*","mocha":"^1.17.0","should":"^3.0.0","supertest":"*","connect":"*"},"scripts":{"test":"make test"},"homepage":"https://github.com/expressjs/csurf","_id":"csurf@1.0.0","dist":{"shasum":"a68d5718b988032e270abf1f4b34f272753d745b","size":2033,"noattachment":false,"key":"/csurf/-/csurf-1.0.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-1.0.0.tgz"},"_from":".","_npmVersion":"1.4.4","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1394001935143,"_cnpm_publish_time":1394001935143,"_hasShrinkwrap":false},"0.1.2":{"name":"csurf","description":"CSRF middleware","version":"0.1.2","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"dependencies":{"uid":"~0.0.2"},"license":"MIT","repository":{"type":"git","url":"https://github.com/discore/csurf.git"},"bugs":{"url":"https://github.com/discore/csurf/issues"},"readmeFilename":"README.md","_id":"csurf@0.1.2","dist":{"shasum":"235bd8ff2f1d8665701c6741f5e716b3ee369205","size":1980,"noattachment":false,"key":"/csurf/-/csurf-0.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-0.1.2.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1378181779735,"_cnpm_publish_time":1378181779735,"_hasShrinkwrap":false},"0.1.1":{"name":"csurf","description":"CSRF middleware","version":"0.1.1","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"dependencies":{"uid":"~0.0.2"},"license":"MIT","repository":{"type":"git","url":"https://github.com/discore/csurf.git"},"bugs":{"url":"https://github.com/discore/csurf/issues"},"readmeFilename":"README.md","_id":"csurf@0.1.1","dist":{"shasum":"61f046a8a9d62d53ce19097f83318c2abdf11ab9","size":1973,"noattachment":false,"key":"/csurf/-/csurf-0.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-0.1.1.tgz"},"_from":".","_npmVersion":"1.3.9","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1377931073844,"_cnpm_publish_time":1377931073844,"_hasShrinkwrap":false},"0.1.0":{"name":"csurf","description":"CSRF middleware","version":"0.1.0","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/discore/csurf.git"},"bugs":{"url":"https://github.com/discore/csurf/issues"},"readmeFilename":"README.md","_id":"csurf@0.1.0","dist":{"shasum":"2946fd6c7966f94116f47a1256164e715a6b087d","size":1951,"noattachment":false,"key":"/csurf/-/csurf-0.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-0.1.0.tgz"},"_from":".","_npmVersion":"1.3.7","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1376705234909,"_cnpm_publish_time":1376705234909,"_hasShrinkwrap":false},"0.0.2":{"name":"csurf","description":"CSRF middleware","version":"0.0.2","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"license":"MIT","repository":{"type":"git","url":"https://github.com/discore/csurf.git"},"bugs":{"url":"https://github.com/discore/csurf/issues"},"readmeFilename":"README.md","_id":"csurf@0.0.2","dist":{"shasum":"b8eb933c21d3d01fa88d2232c9c2bc1dbe91f56e","size":1870,"noattachment":false,"key":"/csurf/-/csurf-0.0.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-0.0.2.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1369096812306,"_cnpm_publish_time":1369096812306,"_hasShrinkwrap":false},"0.0.1":{"name":"csurf","description":"CSRF middleware","version":"0.0.1","author":{"name":"Jonathan Ong","email":"me@jongleberry.com","url":"http://jongleberry.com"},"license":"WTFPL","repository":{"type":"git","url":"https://github.com/discore/csurf.git"},"bugs":{"url":"https://github.com/discore/csurf/issues"},"readmeFilename":"README.md","_id":"csurf@0.0.1","dist":{"shasum":"4e4af40f1ff813a3fbd61ada455df5416af632d7","size":1251,"noattachment":false,"key":"/csurf/-/csurf-0.0.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/csurf/download/csurf-0.0.1.tgz"},"_from":".","_npmVersion":"1.2.21","_npmUser":{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},"maintainers":[{"name":"defunctzombie","email":""},{"name":"dougwilson","email":""},{"name":"fishrock123","email":"fishrock123@rocketmail.com"},{"name":"jongleberry","email":"jonathanrichardong@gmail.com"},{"name":"tjholowaychuk","email":"tj@vision-media.ca"}],"directories":{},"publish_time":1368657989785,"_cnpm_publish_time":1368657989785,"_hasShrinkwrap":false}},"readme":"# csurf\n\n[![NPM Version][npm-version-image]][npm-url]\n[![NPM Downloads][npm-downloads-image]][node-url]\n[![Build status][travis-image]][travis-url]\n[![Test coverage][coveralls-image]][coveralls-url]\n\nNode.js [CSRF][wikipedia-csrf] protection middleware.\n\nRequires either a session middleware or [cookie-parser](https://www.npmjs.com/package/cookie-parser) to be initialized first.\n\n  * If you are setting the [\"cookie\" option](#cookie) to a non-`false` value,\n    then you must use [cookie-parser](https://www.npmjs.com/package/cookie-parser)\n    before this module.\n  * Otherwise, you must use a session middleware before this module. For example:\n    - [express-session](https://www.npmjs.com/package/express-session)\n    - [cookie-session](https://www.npmjs.com/package/cookie-session)\n\nIf you have questions on how this module is implemented, please read\n[Understanding CSRF](https://github.com/pillarjs/understanding-csrf).\n\n## Installation\n\nThis is a [Node.js](https://nodejs.org/en/) module available through the\n[npm registry](https://www.npmjs.com/). Installation is done using the\n[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):\n\n```sh\n$ npm install csurf\n```\n\n## API\n\n<!-- eslint-disable no-unused-vars -->\n\n```js\nvar csurf = require('csurf')\n```\n\n### csurf([options])\n\nCreate a middleware for CSRF token creation and validation. This middleware\nadds a `req.csrfToken()` function to make a token which should be added to\nrequests which mutate state, within a hidden form field, query-string etc.\nThis token is validated against the visitor's session or csrf cookie.\n\n#### Options\n\nThe `csurf` function takes an optional `options` object that may contain\nany of the following keys:\n\n##### cookie\n\nDetermines if the token secret for the user should be stored in a cookie\nor in `req.session`. Storing the token secret in a cookie implements\nthe [double submit cookie pattern][owsap-csrf-double-submit].\nDefaults to `false`.\n\nWhen set to `true` (or an object of options for the cookie), then the module\nchanges behavior and no longer uses `req.session`. This means you _are no\nlonger required to use a session middleware_. Instead, you do need to use the\n[cookie-parser](https://www.npmjs.com/package/cookie-parser) middleware in\nyour app before this middleware.\n\nWhen set to an object, cookie storage of the secret is enabled and the\nobject contains options for this functionality (when set to `true`, the\ndefaults for the options are used). The options may contain any of the\nfollowing keys:\n\n  - `key` - the name of the cookie to use to store the token secret\n    (defaults to `'_csrf'`).\n  - `path` - the path of the cookie (defaults to `'/'`).\n  - `signed` - indicates if the cookie should be signed (defaults to `false`).\n  - `secure` - marks the cookie to be used with HTTPS only (defaults to\n    `false`).\n  - `maxAge` - the number of seconds after which the cookie will expire\n    (defaults to session length).\n  - `httpOnly` - flags the cookie to be accessible only by the web server\n    (defaults to `false`).\n  - `sameSite` - sets the same site policy for the cookie(defaults to\n    `false`). This can be set to `'strict'`, `'lax'`, `'none'`, or `true`\n    (which maps to `'strict'`).\n  - `domain` - sets the domain the cookie is valid on(defaults to current\n    domain).\n\n##### ignoreMethods\n\nAn array of the methods for which CSRF token checking will disabled.\nDefaults to `['GET', 'HEAD', 'OPTIONS']`.\n\n##### sessionKey\n\nDetermines what property (\"key\") on `req` the session object is located.\nDefaults to `'session'` (i.e. looks at `req.session`). The CSRF secret\nfrom this library is stored and read as `req[sessionKey].csrfSecret`.\n\nIf the [\"cookie\" option](#cookie) is not `false`, then this option does\nnothing.\n\n##### value\n\nProvide a function that the middleware will invoke to read the token from\nthe request for validation. The function is called as `value(req)` and is\nexpected to return the token as a string.\n\nThe default value is a function that reads the token from the following\nlocations, in order:\n\n  - `req.body._csrf` - typically generated by the `body-parser` module.\n  - `req.query._csrf` - a built-in from Express.js to read from the URL\n    query string.\n  - `req.headers['csrf-token']` - the `CSRF-Token` HTTP request header.\n  - `req.headers['xsrf-token']` - the `XSRF-Token` HTTP request header.\n  - `req.headers['x-csrf-token']` - the `X-CSRF-Token` HTTP request header.\n  - `req.headers['x-xsrf-token']` - the `X-XSRF-Token` HTTP request header.\n\n## Example\n\n### Simple express example\n\nThe following is an example of some server-side code that generates a form\nthat requires a CSRF token to post back.\n\n```js\nvar cookieParser = require('cookie-parser')\nvar csrf = require('csurf')\nvar bodyParser = require('body-parser')\nvar express = require('express')\n\n// setup route middlewares\nvar csrfProtection = csrf({ cookie: true })\nvar parseForm = bodyParser.urlencoded({ extended: false })\n\n// create express app\nvar app = express()\n\n// parse cookies\n// we need this because \"cookie\" is true in csrfProtection\napp.use(cookieParser())\n\napp.get('/form', csrfProtection, function (req, res) {\n  // pass the csrfToken to the view\n  res.render('send', { csrfToken: req.csrfToken() })\n})\n\napp.post('/process', parseForm, csrfProtection, function (req, res) {\n  res.send('data is being processed')\n})\n```\n\nInside the view (depending on your template language; handlebars-style\nis demonstrated here), set the `csrfToken` value as the value of a hidden\ninput field named `_csrf`:\n\n```html\n<form action=\"/process\" method=\"POST\">\n  <input type=\"hidden\" name=\"_csrf\" value=\"{{csrfToken}}\">\n  \n  Favorite color: <input type=\"text\" name=\"favoriteColor\">\n  <button type=\"submit\">Submit</button>\n</form>\n```\n\n#### Using AJAX\n\nWhen accessing protected routes via ajax both the csrf token will need to be\npassed in the request. Typically this is done using a request header, as adding\na request header can typically be done at a central location easily without\npayload modification.\n\nThe CSRF token is obtained from the `req.csrfToken()` call on the server-side.\nThis token needs to be exposed to the client-side, typically by including it in\nthe initial page content. One possibility is to store it in an HTML `<meta>` tag,\nwhere value can then be retrieved at the time of the request by JavaScript.\n\nThe following can be included in your view (handlebar example below), where the\n`csrfToken` value came from `req.csrfToken()`:\n\n```html\n<meta name=\"csrf-token\" content=\"{{csrfToken}}\">\n```\n\nThe following is an example of using the\n[Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) to post\nto the `/process` route with the CSRF token from the `<meta>` tag on the page:\n\n<!-- eslint-env browser -->\n\n```js\n// Read the CSRF token from the <meta> tag\nvar token = document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content')\n\n// Make a request using the Fetch API\nfetch('/process', {\n  credentials: 'same-origin', // <-- includes cookies in the request\n  headers: {\n    'CSRF-Token': token // <-- is the csrf token as a header\n  },\n  method: 'POST',\n  body: {\n    favoriteColor: 'blue'\n  }\n})\n```\n\n#### Single Page Application (SPA)\n\nMany SPA frameworks like Angular have CSRF support built in automatically.\nTypically they will reflect the value from a specific cookie, like\n`XSRF-TOKEN` (which is the case for Angular).\n\nTo take advantage of this, set the value from `req.csrfToken()` in the cookie\nused by the SPA framework. This is only necessary to do on the route that\nrenders the page (where `res.render` or `res.sendFile` is called in Express,\nfor example).\n\nThe following is an example for Express of a typical SPA response:\n\n<!-- eslint-disable no-undef -->\n\n```js\napp.all('*', function (req, res) {\n  res.cookie('XSRF-TOKEN', req.csrfToken())\n  res.render('index')\n})\n```\n\n### Ignoring Routes\n\n**Note** CSRF checks should only be disabled for requests that you expect to\ncome from outside of your website. Do not disable CSRF checks for requests\nthat you expect to only come from your website. An existing session, even if\nit belongs to an authenticated user, is not enough to protect against CSRF\nattacks.\n\nThe following is an example of how to order your routes so that certain endpoints\ndo not check for a valid CSRF token.\n\n```js\nvar cookieParser = require('cookie-parser')\nvar csrf = require('csurf')\nvar bodyParser = require('body-parser')\nvar express = require('express')\n\n// create express app\nvar app = express()\n\n// create api router\nvar api = createApiRouter()\n\n// mount api before csrf is appended to the app stack\napp.use('/api', api)\n\n// now add csrf and other middlewares, after the \"/api\" was mounted\napp.use(bodyParser.urlencoded({ extended: false }))\napp.use(cookieParser())\napp.use(csrf({ cookie: true }))\n\napp.get('/form', function (req, res) {\n  // pass the csrfToken to the view\n  res.render('send', { csrfToken: req.csrfToken() })\n})\n\napp.post('/process', function (req, res) {\n  res.send('csrf was required to get here')\n})\n\nfunction createApiRouter () {\n  var router = new express.Router()\n\n  router.post('/getProfile', function (req, res) {\n    res.send('no csrf to get here')\n  })\n\n  return router\n}\n```\n\n### Custom error handling\n\nWhen the CSRF token validation fails, an error is thrown that has\n`err.code === 'EBADCSRFTOKEN'`. This can be used to display custom\nerror messages.\n\n```js\nvar bodyParser = require('body-parser')\nvar cookieParser = require('cookie-parser')\nvar csrf = require('csurf')\nvar express = require('express')\n\nvar app = express()\napp.use(bodyParser.urlencoded({ extended: false }))\napp.use(cookieParser())\napp.use(csrf({ cookie: true }))\n\n// error handler\napp.use(function (err, req, res, next) {\n  if (err.code !== 'EBADCSRFTOKEN') return next(err)\n\n  // handle CSRF token errors here\n  res.status(403)\n  res.send('form tampered with')\n})\n```\n\n## References\n\n- [Cross-side request forgery on Wikipedia][wikipedia-csrf]\n- [OWASP Cross-Site Request Forgery Prevention Cheat Sheet][owsap-csrf]\n\n[owsap-csrf]: https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html\n[owsap-csrf-double-submit]: https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#double-submit-cookie\n[wikipedia-csrf]: https://en.wikipedia.org/wiki/Cross-site_request_forgery\n\n## License\n\n[MIT](LICENSE)\n\n[coveralls-image]: https://badgen.net/coveralls/c/github/expressjs/csurf/master\n[coveralls-url]: https://coveralls.io/r/expressjs/csurf?branch=master\n[node-url]: https://nodejs.org/en/download\n[npm-downloads-image]: https://badgen.net/npm/dm/csurf\n[npm-url]: https://npmjs.org/package/csurf\n[npm-version-image]: https://badgen.net/npm/v/csurf\n[travis-image]: https://badgen.net/travis/expressjs/csurf/master\n[travis-url]: https://travis-ci.org/expressjs/csurf\n","_attachments":{},"homepage":"https://github.com/expressjs/csurf#readme","bugs":{"url":"https://github.com/expressjs/csurf/issues"},"license":"MIT"}