ฉันต้องการที่จะเข้ารหัส URL นี้:
SELECT name FROM user WHERE uid = me()
ฉันต้องดาวน์โหลดโมดูลสำหรับสิ่งนี้หรือไม่? ฉันมีโมดูลคำขออยู่แล้ว
ฉันต้องการที่จะเข้ารหัส URL นี้:
SELECT name FROM user WHERE uid = me()
ฉันต้องดาวน์โหลดโมดูลสำหรับสิ่งนี้หรือไม่? ฉันมีโมดูลคำขออยู่แล้ว
คำตอบ:
คุณสามารถใช้ JavaScript encodeURIComponent
:
encodeURIComponent('select * from table where i()')
decodeURIComponent
เป็นวิธีที่คุณถอดรหัส URI ที่เข้ารหัส ไม่เป็นไร
โมดูลในตัว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()'
ใช้ฟังก์ชั่นของ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) ดูเหมือนจะส่งคืนสตริงว่างตอนนี้
querystring.escape()
วิธีการใช้งานโดยquerystring.stringify()
ทั่วไปไม่คาดว่าจะใช้โดยตรง"
โปรดทราบว่าการเข้ารหัส URI นั้นดีสำหรับส่วนของแบบสอบถาม แต่ก็ไม่ดีสำหรับโดเมน โดเมนได้รับการเข้ารหัสโดยใช้ punycode คุณต้องการไลบรารีเช่นURI.jsเพื่อแปลงระหว่าง URI และ IRI (Internationalized Resource Identifier)
สิ่งนี้ถูกต้องถ้าคุณวางแผนที่จะใช้สตริงในภายหลังเป็นสตริงแบบสอบถาม:
> 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'
encodeURIComponent (สตริง) จะทำ:
encodeURIComponent("Robert'); DROP TABLE Students;--")
//>> "Robert')%3B%20DROP%20TABLE%20Students%3B--"
การส่ง SQL ไปรอบ ๆ ในสตริงการสืบค้นอาจไม่ใช่แผนการที่ดี