Articles of 转义

Node.js:执行unix命令时转义空格

我使用这个命令来压缩node.js中的文件: var command = '7z a ' + dest + ' ' + orig; exec( command, function(err, stdout, stderr) { …}); 问题来了,当一个文件有7z a my vacation.zip my vacation.pdf空间7z a my vacation.zip my vacation.pdf 我怎么能逃避dest和orig?

应该逃脱的string是“非转义”(MySQL,Node.js)?

我正在通过felixge与MySQL的节点驱动程序。 在文档之后 https://github.com/felixge/node-mysql#escaping-query-values 在传入MySQL 之前,string应该被转义以避免注入攻击。 我的问题是:从MySQL加载后,数据应该以某种方式“未转义”? 目前,我有一个数据完整性的问题:我从一个包含换行符的string开始。 (用console.log(string)打印在console.log(string)显示换行符)。 转义string后,它被保存到一个MySQL数据库。 但是,在将string加载回内存后, console.log(string)显示转义码\n而不是换行符。

npm代理设置转义'\'字符

我在公司代理后面,我需要将设置设置为npm。 唯一的问题是我的用户名包含一个\字符。 代理设置应如下所示: http://PREFIX\username:password@proxy.company.com:port但最终结果如下所示: http://prefix/username:password@proxy.company.com:port这是完全错误的。 将%5C而不是\不起作用。 也不把用户名和密码,或整个url在"" 。 我知道这个问题已经被问了很多次了,但是没有一个解决scheme为我做了。 我在一台Windows机器上。 如果您有任何build议,我将不胜感激。

String.replace与/和\在Nodejs不同于在Chrome中?

我试图在Nodejs中做一个路由器。 其中很大一部分是URI -> action ,所以我需要一个简单的可configuration的URI列表,并将它们正则expression为正则expression式以匹配请求URI。 简单! 我已经用PHP一百万次了。 给或拿。 所以这就是我所做的(testing): > uri = '/users/#/status/*' > uri.replace(/\//g, '\\/').replace(/#/g, '(\d+)').replace(/\*/g, '([^/]+)') 我正在做的是1)转义/和2)用\d+replace#和3)用[^/]+replace* 在Chrome中,按预期工作: < \/users\/(d+)\/status\/([^/]+) 转义/并正确replace#和* 。 这是V8。 在Nodejs中: < \\/users\\/(d+)\\/status\\/([^/]+) 阙!? 每一个都被加倍逃脱? 我要么加倍逃脱/要么逃脱/ 。 正则expression式是正确的,对吧? 我使用的是Chrome 15 dev(V8 javascript)和Node 0.5.8 dev(V8 javascript)。 这里发生了什么? 潜在的有趣 如果我testing/^\/users\/(\d+)\/status\/([^/]+)/.test('/users/1/status/x')它会在Chrome和Node中都返回true。

讨厌和怪异的正则expression式问题:'io \'。 得到一个匹配的单词“function”

从节点REPL的东西, > 'function'.search('io\.') 5 我真的需要它只匹配“io”。 而不是“function”或任何与“io”在中间的东西… 更奇怪的事情: > 'io'.search('io\.') -1 > 'ion'.search('io\.') 0 所以看来我不是逃避点字符..? 但我与“\”…对不对? 我在http://www.regextester.com/和http://regexpal.com/上都testing过,它的工作原理是我认为它应该可以工作的。 我究竟做错了什么 ? 在node.js中的正则expression式的东西有点不同,然后我习惯了吗? 编辑1:在谷歌浏览器的JavaScript控制台我也可以 'function'.search('io\.') 5 所以这可能是一个V8的事情…对不对? 编辑2:我从Firefox的JavaScript控制台得到相同的结果,所以它不是一个V8的事情…这里发生了什么? 我真的很困惑

NodeJS Express对URL进行编码 – 如何解码

我用Express来使用NodeJS,当我在URL中使用外部字符时,它们自动被编码。 我如何解码回原来的string? 在调用NodeJS之前,我转义字符。 所以string: אובמה 成为%u05D0%u05D5%u05D1%u05DE%u05D4 现在整个URL如下所示: http://localhost:32323/?query=%u05D0%u05D5%u05D1%u05DE%u05D4 现在在我的NodeJS中,我得到了转义string%u05D0%u05D5%u05D1%u05DE%u05D4 。 这是相关的代码: var url_parts = url.parse(req.url, true); var params = url_parts.query; var query = params.query; // '%u05D0%u05D5%u05D1%u05DE%u05D4' 我试过url和querystring库,但似乎没有适合我的情况。 querystring.unescape(query); // still '%u05D0%u05D5%u05D1%u05DE%u05D4'

如何在nodejs中转义字符?

我想知道你将如何逃避nodejs中的特殊字符。 我有一个string$ what $ ever $,我需要它逃脱像\ $什么\ $ ever \ $之前,我与它调用一个python脚本。 我累了querystring NPM包,但它做了别的。 谢谢!

在Node中包含换行符的环境variables?

我试图使用环境variables将RSA私钥加载到我的nodejs应用程序中,但换行符似乎正在被自动转义。 对于以下内容,假设PRIVATE_KEY env var被设置为以下(不是我的实际密钥): PRIVATE_KEY="—–BEGIN RSA PRIVATE KEY—–\nMIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\nwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\n1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\n3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\npIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\nGukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\nAkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\nL0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\nX6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\nU9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\n37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\n—–END RSA PRIVATE KEY—–" 如果我直接调用console.log与前面的string,我得到以下输出: —–BEGIN RSA PRIVATE KEY—– MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5 1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh 3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2 pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ 37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0= —–END RSA PRIVATE KEY—– 你可以看到换行符正在被尊重。 但是,如果我调用console.log(process.env["PRIVATE_KEY"]) ,则输出将包含\n而不是实际换行符: —–BEGIN RSA PRIVATE KEY—–\nMIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp\nwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5\n1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh\n3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2\npIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX\nGukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il\nAkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF\nL0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k\nX6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl\nU9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ\n37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=\n—–END RSA PRIVATE KEY—– 我一直在试图find更多关于如何节点处理环境variables没有运气的信息。 如何在维护换行符的同时通过env vars加载此密钥? 如果这是不可能的,我该如何恢复它们?

如何在节点中为shell命令转义string?

在nodejs中 ,执行外部命令的唯一方法是通过sys.exec(cmd)。 我想调用一个外部命令,并通过stdin给它的数据。 在nodejs中,似乎还没有一种方法可以打开一个命令,然后将数据推送给它(只能执行并接收其标准的+错误输出),所以看起来目前我必须做的唯一方法是通过一个单一的string命令,如: var dangerStr = "bad stuff here"; sys.exec("echo '" + dangerStr + "' | somecommand"); 对这样的问题的大多数答案都集中在nodejs(它使用Google的V8 Javascript引擎)或Python等其他语言的本地特性对我不起作用的正则expression式。 我想逃避dangerStr,以便安全地编写像上面那样的execstring。 如果有帮助,dangerStr将包含JSON数据。

使一个JavaScriptstringSQL友好

有没有做一个JavaScriptstring被传递给NodeJS友好的MySQL? 我试图将电子邮件地址传递给我的NodeJS服务器,并查询到MySQL数据库。 当做常规文本,如用户名工作正常,但电子邮件地址不。 显然使用转义不是正确的答案,因为它不适用于SQL插入。 我假设我需要PHP函数mysql_real_escape_string() 。