SELECT name FROM user WHERE uid = me()
我是否需要为此下载模块?我已经有了请求模块。
#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 楼
使用escape
的querystring
函数。它生成一个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可能不是一个好的计划,
请参阅此一个
评论
确实,这是一条湿滑的道路,应不惜一切代价避免。您是否要在网址中放入SQL语句???注意SQL注入攻击!将SQL暴露给用户通常是一个坏主意,这确实很危险。
@LightnessRacesinOrbit:看起来像一个FQL查询。
@Demi:不?那将如何工作。即使每个SO用户都有自己的数据库帐户,DBMS权限也不够细致。告诉我,您在哪里看到SQL查询直接传递?数据浏览器是一个例外,但它是所有只读视图,并且肯定不会放在URL中。
这个家伙可能正在构建一个SQL验证工具,在这样的示例中传递SQL命令没有错。过多地专注于不回答问题也不给出好的建议(最受批评的评论没有给出好的建议,只会取笑OP)