我想对此进行URL编码:

SELECT name FROM user WHERE uid = me() 


我是否需要为此下载模块?我已经有了请求模块。

评论

确实,这是一条湿滑的道路,应不惜一切代价避免。

您是否要在网址中放入SQL语句???注意SQL注入攻击!将SQL暴露给用户通常是一个坏主意,这确实很危险。

@LightnessRacesinOrbit:看起来像一个FQL查询。

@Demi:不?那将如何工作。即使每个SO用户都有自己的数据库帐户,DBMS权限也不够细致。告诉我,您在哪里看到SQL查询直接传递?数据浏览器是一个例外,但它是所有只读视图,并且肯定不会放在URL中。

这个家伙可能正在构建一个SQL验证工具,在这样的示例中传递SQL命令没有错。过多地专注于不回答问题也不给出好的建议(最受批评的评论没有给出好的建议,只会取笑OP)

#1 楼

您可以使用JavaScript的encodeURIComponent
encodeURIComponent('select * from table where i()')


评论


要保存访问者的搜索信息,是的。。。解码URI组件是您对编码的URI进行解码的方式。别客气。

–凯尔·法里斯(KyleFarris)
19年4月2日在19:41

#2 楼

您正在寻找内置模块querystring

var querystring = require("querystring");
var result = querystring.stringify({query: "SELECT name FROM user WHERE uid = me()"});
console.log(result);
#prints 'query=SELECT%20name%20FROM%20user%20WHERE%20uid%20%3D%20me()'


评论


在这种情况下,我们只能传递映射而不是字符串,因此,如果arg是字符串,那么您将看不到任何结果。因此,如果您有要编码的字符串,请使用encodeURIComponent()。

– Ankit Patial
13年7月31日在6:46



这对于编码JSON对象并对其进行发布更好。

– Alex W
15年12月20日在16:53

如果字符串包含“或”字符则不

– Jkarttunen
16-09-16在21:48

#3 楼

使用escapequerystring函数。它生成一个URL安全字符串。

var escaped_str = require('querystring').escape('Photo on 30-11-12 at 8.09 AM #2.jpg');
console.log(escaped_str);
// prints 'Photo%20on%2030-11-12%20at%208.09%20AM%20%232.jpg'


评论


这显然是正确的功能; querystring.stringify()(在Nicolas的答案中)现在似乎返回一个空字符串。

– brandonscript
16年5月13日在18:18

nodejs.org/api/…说:“ querystring.escape()方法由querystring.stringify()使用,通常不希望直接使用。”

–西蒙·汉尼斯(SimonHänisch)
17年8月18日在1:24

#4 楼

请注意,URI编码对查询部分有利,而对域则不利。使用punycode对域进行编码。您需要像URI.js这样的库才能在URI和IRI(国际化资源标识符)之间进行转换。

如果以后计划将该字符串用作查询字符串,这是正确的:

> encodeURIComponent("http://examplé.org/rosé?rosé=rosé")
'http%3A%2F%2Fexampl%C3%A9.org%2Fros%C3%A9%3Fros%C3%A9%3Dros%C3%A9'


如果您不想转义/:?之类的ASCII字符,请改用encodeURI

> encodeURI("http://examplé.org/rosé?rosé=rosé")
'http://exampl%C3%A9.org/ros%C3%A9?ros%C3%A9=ros%C3%A9'


>但是,对于其他用例,您可能需要uri-js代替:

> var URI = require("uri-js");
undefined
> URI.serialize(URI.parse("http://examplé.org/rosé?rosé=rosé"))
'http://xn--exampl-gva.org/ros%C3%A9?ros%C3%A9=ros%C3%A9'


#5 楼

encodeURIComponent(string)可以做到:

encodeURIComponent("Robert'); DROP TABLE Students;--")
//>> "Robert')%3B%20DROP%20TABLE%20Students%3B--"


尽管在查询字符串中传递SQL可能不是一个好的计划,

请参阅此一个