Articles of expression

为什么Express / Connect为每个请求生成新的CSRF令牌?

据我所知,有两种方法可以防止CSRF攻击:1) 每个会话令牌 ,2) 每个请求令牌 1)在第一种情况下,当用户会话初始化时,CSRF令牌只生成一次。 所以一次只有一个用户有效的令牌。 2)在第二种情况下,每个请求都会生成一个新的CSRF令牌,之后一个旧的无效。 由于攻击者窃取令牌(通过XSS) ,当用户转到下一页时,就会过期,从而使得难度更大。 但另一方面,这种方法使webapp不太可用。 这里有一个很好的来自security.stackexchange.com的引用: 例如,如果他们点击“后退”button,并提交新的值的forms,提交将失败,并可能用一些敌对的错误信息迎接他们。 如果他们尝试在第二个选项卡中打开资源,他们会发现会话在一个或两个选项卡中随机分配 在分析Node.js Express框架(基于Connect )的时候,我发现每个请求都会生成一个新的CSRF标记, 但是旧的标记不会失效 。 我的问题是 :为什么要在每个请求中提供新的CSRF标记,而不是使旧的无效? 为什么不只是每个会话生成一个令牌? 谢谢你,对不起我的英文!

Node Express中caching:白名单/黑名单视图如何?

Express有一个内置的caching机制,用app.enable('view cache')设置。 但是,如何区分应该caching的意见和应该始终保持新鲜的意见呢?

错误的JavaScript V8的正则expression式引擎时匹配的开始行?

我有一个非常漂亮的工具, 下划线 ,这是在打印出帮助/使用信息时得到最奇怪的行为。 在usage()函数中,我这样做来缩进文本块(例如,选项): str.replace(/^/, " "); 除了非常明显之外,这个正则expression式直接来自TJ Hollowaychuk的commander.js代码。 正则expression式是正确的。 然而,我在我的使用文本中间插入了一些bizzare空格。 喜欢这个: 命令: … 值检索对象属性的所有值。 扩展&ltobject>覆盖input数据中的属性。 默认值&ltobject>填写input数据中缺less的属性。 any&ltexp>如果input中的任何值使expression式为真,则返回“true”。 expression式参数:(值,键,列表) all&ltexp>如果input中的所有值都使expression式为true,则返回“true”。 expression式参数:(值,键,列表) isObject如果input数据是具有命名属性的对象,则返回“true” isArray如果input数据是数组,则返回“true” isString如果input数据是string,则返回“true” … 99%的机会,这是V8中的一个bug。 任何人都知道为什么会发生这种情况,或者最简单的解决办法是什么? 是的,事实certificate这是一个V8的错误,1748是确切的。 以下是我在该工具中使用的解决方法 : str.replace(/(^|\n), "$1 ");

有没有一个模块轻松地模拟req / res对象的unit testing连接样式处理程序?

我在node.js中编写了一个应用程序,其中包含一些连接样式端点处理程序(函数(req,resp)),并希望针对它们编写一些unit testing,而无需运行完整的应用程序。 我知道我可以“简单地”推动任何我手动写入的设备,但是我想知道是否有任何库可以帮助我更快地生成这些设备。 编辑:进一步解释我想要什么,我想在我的unit testing只执行我的处理程序(而不是我的应用程序),为此,我需要一个假的需求和水库。 那些是我想嘲笑的两件东西。 我目前正在使用摩卡作为testing运行器和核心断言模块。

查找一个string是否匹配一个模式

在我的应用程序的一个点上,我需要匹配一些模式的string。 假设一些示例string如下所示: 你好,约翰。 今天真是美好的一天! 今天可爱的日落,约翰,不是吗? 约翰,你今天会见琳达吗? 大多数(不是全部)这些string都来自预定义的模式,如下所示: “你好,%s。” 今天真是美好的一天!“ “今天可爱的日落,%s,不是吗? “你今天会开会吗,%s? 这个模式库不断扩大(目前在1,500左右),但手动维护。 inputstring虽然(第一组)很大程度上是不可预知的。 虽然他们中的大多数将匹配其中的一种模式,但其中一些不会。 所以,这是我的问题:给定一个string(从第一组)作为input,我需要知道哪些模式(已知第二组)它匹配。 如果没有任何匹配,它需要告诉我。 我猜测解决scheme涉及到从模式中构build一个正则expression式,并迭代地检查哪一个匹配。 不过,我不确定构build这些正则expression式的代码是什么样的。 注:我在这里给出的string是为了说明的目的。 实际上,这些string不是人类生成的,而是由我不能控制的系统在上面显示的计算机生成的人性化string。 由于它们不是手动input的,我们不需要担心types错误和其他人为错误。 只需要find匹配的模式。 注2:我可以修改模式库为其他格式,如果这样可以更容易地构造正则expression式。 当前的结构,printf样式%s,并不是一成不变的。

我应该使用Sails.js和Stormpath整合会话pipe理吗?

我正在调查使用Stormpath为我们的用户pipe理。 我目前有一个使用Node.js / Express.js的Sails.js应用程序。 目前,会话pipe理由默认的Sails.js框架处理,该框架严重依赖Express的会话中间件。 会话存储在生产中的共享Redis数据库中,以便我们可以保持多个API服务器无状态。 我的问题是两个会话pipe理系统是否会冲突和/或引起错误? 他们必须巩固还是可以安全地将他们分开? 如果他们必须合并,那么你如何configuration中间件? 作为一个说明,我们不会在Stormpath上存储很多用户数据,我们只会将它们用作auth / token提供程序。 谢谢您的帮助!

ElasticSearch Nodejs Express自动化testing

如何使用Nodetesting框架实现对ElasticSearch的自动化testing? 我想实现ElasticSearch到我的nodejs项目中,以获得高效的search能力,这是使用Express框架,frisby,Socket.io等ElasticSearch nodejs实现很容易在谷歌提供,但不是它的自动化testing。 需要build议。

通过Sequelize(Express / NodeJS)访问MySQL时出错

我正在尝试使用Sequelize。 我虽然想到了一些错误,但清除了其中的一些,但是我无法弄清楚。 项目结构: Project -Client -Server –models —index.js —Sid.js –router —routes —-signup.js —index.js app.js 我的configuration可变: "Lexstart": { "dbConfig": { "driver": "mysql", "user": "root", "database": "sid1", "password": "sid1", "host": "127.0.0.1", "port": "3306" } } 我的模特/ index.js: var fs = require("fs"); var path = require("path"); var Sequelize = require('sequelize'); var config = require('config'); // we use node-config […]

脚本没有被调用

我正在使用ExpressJS。 我的脚本或CSS将不会加载。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/> <meta name="apple-mobile-web-app-capable" content="yes"/> <meta name="apple-mobile-web-app-status-bar-style" content="black"/> <title>Customer Info</title> <link rel="stylesheet" href="/stylesheets/testing.css" type="text/css" media="screen" charset="utf-8"/> <script type="text/javascript" src="/javascripts/jquery-1.9.1.js"></script> <script src="/javascripts/jquery-ui-1.10.2.custom.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript" src="/javascripts/testing.js"></script> </head> <body> //body contents </body> </html> 我知道问题不在于地点。 当我以快速渲染这个EJS视图时,没有任何脚本正在加载。 我不明白为什么它会为几乎相同的观点工作,但不是这个。 有任何想法吗?

正则expression式不能读取HTML文件

首先,我知道大多数RegExp问题。 这不是其中之一,“请写我的代码”的问题。 我的困惑在于,我的RegExp在regexr上工作,在chrome的开发工具中轮询document.body.textContent ,但是在io.js中读取后,不在HTML文件上。 io.js是版本1.5.1,在Windows 8上运行 为什么它会在这两个地方上市,但不是在io.js? 我没有考虑到io.js读取文件的问题吗? 我的RegExp应该与下面的链接中的“ @{each ___->___} text and line breaks @{/each} ”匹配,但是它会返回null 这是我正在尝试使用: http : //regexr.com/3aldk 正则expression式: /@\{each ([a-zA-Z0-9->.]*)\}([\s\S]*)@\{\/each}/g JS(例子): fs.readFile('view.html', {encoding:'utf8'}, function(error, html) { console.log(html.match(myRegExp)); // null }); HTML: <!doctype html> <html> <head> <title>@{title}</title> </head> <body> <h1>@{foo.bar}</h1> <p> Lorem ipsum dolor sit amet, @{foo.baz.hoo} </p> @{each people->person} <div> <b>@{person.name}:</b> […]