Chcę, aby adres URL zakodował to:
SELECT name FROM user WHERE uid = me()
Czy muszę do tego pobrać moduł? Mam już moduł żądania.
Chcę, aby adres URL zakodował to:
SELECT name FROM user WHERE uid = me()
Czy muszę do tego pobrać moduł? Mam już moduł żądania.
Odpowiedzi:
Możesz użyć JavaScript encodeURIComponent
:
encodeURIComponent('select * from table where i()')
decodeURIComponent
to sposób, w jaki dekodujesz zakodowany URI. Nie ma za co.
Wbudowany moduł querystring
jest tym, czego szukasz:
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()'
Skorzystaj z escape
funkcji querystring
. Generuje bezpieczny ciąg adresu 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()
(w odpowiedzi Nicolasa) wydaje się teraz zwracać pusty ciąg.
querystring.escape()
Metodę tę stosuje querystring.stringify()
i na ogół nie oczekuje się, że będzie stosowana bezpośrednio”.
Pamiętaj, że kodowanie URI jest dobre dla części zapytania, nie jest dobre dla domeny. Domena zostaje zakodowana przy użyciu punycode. Potrzebujesz biblioteki takiej jak URI.js do konwersji między URI i IRI (internacjonalizowany identyfikator zasobu).
Jest to poprawne, jeśli planujesz użyć ciągu później jako ciągu zapytania:
> encodeURIComponent("http://examplé.org/rosé?rosé=rosé")
'http%3A%2F%2Fexampl%C3%A9.org%2Fros%C3%A9%3Fros%C3%A9%3Dros%C3%A9'
Jeśli nie chcesz, aby znaki ASCII, takie jak i /
, były oznaczone znakiem ucieczki, użyj zamiast tego::
?
encodeURI
> encodeURI("http://examplé.org/rosé?rosé=rosé")
'http://exampl%C3%A9.org/ros%C3%A9?ros%C3%A9=ros%C3%A9'
Jednak w innych przypadkach użycia może być konieczne użycie 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 (string) zrobi to:
encodeURIComponent("Robert'); DROP TABLE Students;--")
//>> "Robert')%3B%20DROP%20TABLE%20Students%3B--"
Przekazywanie SQL w ciągu zapytania może nie być dobrym planem,