আমি কীভাবে ইউআরএলকে নোড.জেএস-তে কিছু এনকোড করব?


314

আমি ইউআরএল এটি এনকোড করতে চান:

SELECT name FROM user WHERE uid = me() 

এর জন্য কি আমাকে কোনও মডিউল ডাউনলোড করতে হবে? আমি ইতিমধ্যে অনুরোধ মডিউল আছে।


8
প্রকৃতপক্ষে, এটি একটি পিচ্ছিল রাস্তা এবং যে কোনও মূল্যে এড়ানো উচিত।
আলফ্রেড

19
আপনি কি আপনার ইউআরএলে এসকিউএল স্টেটমেন্ট রাখার চেষ্টা করছেন ??? এসকিউএল ইনজেকশন আক্রমণ থেকে সাবধান ! ব্যবহারকারীদের কাছে এসকিউএল প্রকাশ করা সাধারণত একটি খারাপ ধারণা, এটি সত্যই বিপজ্জনক।
লিওনম্যাক্স

4
@ লাইটনেসেসেসিনআরবিট: এফকিউএল-কোয়েরির মতো দেখাচ্ছে।
nikc.org

2
@ ডেমি: না? কিভাবে যে কাজ করবে। ডিবিএমএস অনুমতিগুলি পর্যাপ্ত পরিমাণে জরিমানাযুক্ত নয়, এমনকি যদি প্রতিটি এসও ব্যবহারকারী তাদের নিজস্ব ডিবি অ্যাকাউন্ট পেয়ে থাকে। বলুন এসওএল এ আপনি কোথায় দেখেন এসকিউএল কোয়েরিগুলি সরাসরি পাস করেছে? এক ব্যতিক্রম হ'ল ডেটা এক্সপ্লোরার, তবে এগুলি সমস্তই কেবল পঠনযোগ্য দর্শন এবং এটি অবশ্যই URL- এ রাখা হয়নি।
অরব্বিটে হালকাতা রেস

17
লোকটি একটি এসকিউএল বৈধকরণ সরঞ্জাম তৈরি করতে পারে, এর মতো উদাহরণে এসকিউএল কমান্ডগুলি পাস করার ক্ষেত্রে কোনও ভুল নেই। প্রশ্নের উত্তর না দেওয়ার বিষয়ে খুব বেশি ফোকাস না দেওয়া বা ভাল পরামর্শ দেওয়া (সর্বাধিক উত্সাহিত মন্তব্যটি ভাল পরামর্শ দেয় না, কেবল ওপিকে মজা দেয়)
রাফেল আইং

উত্তর:


597

আপনি জাভাস্ক্রিপ্ট এর ব্যবহার করতে পারেন encodeURIComponent:

encodeURIComponent('select * from table where i()')

31
দর্শকদের একটি অনুসন্ধান সংরক্ষণ করতে, হ্যাঁ ... decodeURIComponentআপনি কীভাবে এনকোডযুক্ত ইউআরআই ডিকোড করবেন। আপনাকে স্বাগতম.
কাইলফারিস

125

অন্তর্নির্মিত মডিউলটি 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()'

4
এক্ষেত্রে আমরা কেবল একটি স্ট্রিং নয় মানচিত্রটি পাস করতে পারি, সুতরাং আরগ যদি স্ট্রিং হয় তবে ফলস্বরূপ আপনি কিছুই দেখতে পাবেন না। সুতরাং আপনার যদি এনকোডের জন্য স্ট্রিং থাকে তবে এনকোডেরিউআরকিউম্পোনেন্ট () ব্যবহার করুন।
অঙ্কিত পটিয়াল

1
এটি JSON অবজেক্টগুলি এনকোডিং এবং তাদের পোস্ট-ইন করার জন্য ভাল is
অ্যালেক্স ডাব্লু

যদি স্ট্রিংটিতে 'বা "অক্ষর থাকে
জাকার্টটিউন

47

এর 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'

1
এটি অবশ্যই সঠিক ফাংশন বলে মনে হচ্ছে; querystring.stringify()(নিকোলাসের উত্তরে) মনে হয় এখন একটি খালি স্ট্রিং ফিরে আসবে।
ব্র্যান্ডস্ক্রিপ্ট

4
nodejs.org/api/… বলেছেন: " querystring.escape()পদ্ধতিটি ব্যবহার করে querystring.stringify()এবং সাধারণত সরাসরি ব্যবহার করা হবে বলে আশা করা যায় না।"
সাইমন হিনিশ

17

নোট করুন যে ইউআরআই এনকোডিং ক্যোয়ারী অংশের জন্য ভাল, এটি ডোমেনের পক্ষে ভাল নয়। ডোমেনটি পিউকোড ব্যবহার করে এনকোড হয়। ইউআরআই এবং আইআরআই (ইন্টারন্যাশনালাইজড রিসোর্স আইডেন্টিফায়ার) এর মধ্যে রূপান্তর করতে আপনার ইউআরআই জেসের মতো একটি গ্রন্থাগার দরকার ।

আপনি যদি ক্যোয়ারী স্ট্রিং হিসাবে পরে স্ট্রিংটি ব্যবহার করার পরিকল্পনা করেন তবে এটি সঠিক:

> 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'

তবে অন্যান্য ব্যবহারের ক্ষেত্রে এর পরিবর্তে আপনার ইউরি-জেএসের প্রয়োজন হতে পারে :

> 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'

12

এনকোডিউআরআইকিউম্পোন্ট (স্ট্রিং) এটি করবে:

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

এসকিউএলকে কোয়েরি স্ট্রিংয়ে পাস করা ভাল পরিকল্পনা নাও হতে পারে,

এই এক দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.