জেএসন: ফরোয়ার্ড স্ল্যাশ কেন পালাতে পারল?


369

আমাকে "পলায়ন" করার কারণ।

জেএসএন ফরোয়ার্ড স্ল্যাশ থেকে রক্ষা পেয়েছে, সুতরাং {a: "a/b/c"}তার {"a":"a\/b\/c"}পরিবর্তে একটি হ্যাশ সিরিয়ালযুক্ত করা হয়েছে {"a":"a/b/c"}

কেন?


4
এফডাব্লুআইডাব্লু আমি জেএসএন
জেসন এস

24
পিএইচপি এর json_encode()পালাতে ডিফল্টরূপে ফরওয়ার্ড স্ল্যাশ, কিন্তু আছে JSON_UNESCAPED_SLASHESপিএইচপি 5.4.0 (মার্চ 2012) থেকে শুরু বিকল্প
ওয়াল্টার Tross

6
এখানে একটি পিএইচপি কোড রয়েছে যা প্রতিটি স্ল্যাশ থেকে রক্ষা পাবে না, কেবল এতে '</':echo str_replace('</', '<\/', json_encode($obj, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
রুস্টেক্স

কোডটিতে '</' অন্তর্ভুক্ত রয়েছে: বা এটি প্রতিধ্বনি দিয়ে শুরু হয়? কারণ প্রতিধ্বনি শুরু আমার জন্য ব্যর্থ। আমি কেবল কিছু পাই না হ্যাঁ আমি আমার ভেরিয়েবলের জন্য আমার $
জেজটি

JSON পালাতে বা কিছুই সিরিয়ালাইজ করে না ... আপনার JSON সিরিয়ালাইজারটি করে। আপনি কোনটি ব্যবহার করছেন?
অরবিটে হালকা ঘোড়দৌড়

উত্তর:


284

জেএসএনের আপনার এটি করার দরকার নেই, এটি আপনাকে এটি করতে দেয়। এটি আপনাকে "এ" এর জন্য "\ u0061" ব্যবহার করার অনুমতি দেয়, তবে এটির প্রয়োজন হয় না। জেএসওএনকে \/কোনও <script>ট্যাগে এম্বেড করার সময় মঞ্জুরি দেয়, যা </সেব পয়েন্টের মতো অভ্যন্তরের স্ট্রিংগুলিকে অনুমতি দেয় না ।

মাইক্রোসফ্টের ASP.NET Ajax / JSON API এর কিছু অতিরিক্ত তথ্য যুক্ত করতে এই ফাঁকটি ব্যবহার করে, যেমন, একটি ডেটটাইম হিসাবে প্রেরণ করা হবে "\/Date(milliseconds)\/"। (ইশ)


4
কেবল </ / এড়িয়ে চলা ভাল জিনিস হবে। যদিও JSON প্রায়শই যাইহোক স্ক্রিপ্ট ট্যাগগুলিতে এম্বেড হয় না।
রুবেন

8
ASP.NET JSON তারিখের ফর্ম্যাটটির যৌক্তিকতার জন্য এই ব্লগ পোস্টটি দেখুন: weblogs.asp.net/bleroy/archive/2008/01/18/dates-and-json.aspx
মিশিগেল ভ্যান অস্টারহাট

25
জেএসএনকে প্রতিস্থাপন করা প্রয়োজন কারণ একটি জেএসএন সিরিয়ালাইজারের একটি বিশেষ প্রয়োগের ফলে কিছু জেএসওনকে আউটপুট দেয় ( পুরোপুরি বৈধ জেএসএন থাকাকালীন ) কিছু অতিরিক্ত অক্ষর রয়েছে যাতে এটি জেএস আক্ষরিক হিসাবে একটি HTML স্ক্রিপ্ট উপাদানটিতেও ফেলে দেওয়া যায় ?! স্নানের জল দিয়ে বাচ্চাকে বাইরে ফেলে দেওয়ার মতো এটি এতটা নয় যে কেউ তাকে এক সেট জলের ডানা কিনেছিল।
কোয়ান্টিন

15
আমি যা পাই না, সে কারণেই কোনও জেএসএন সিরিয়ালাইজার এমনকি জেএসওএন কোথায় শেষ হবে সেদিকেও খেয়াল রাখে। একটি ওয়েব পৃষ্ঠায়, একটি HTTP অনুরোধে, যাই হোক না কেন। চূড়ান্ত উপস্থাপককে এটির প্রয়োজন হলে অতিরিক্ত এনকোডিং করতে দিন।
ড্যান রস

5
@ ড্যানরোস এবং এটি করতে পারে। পলায়নের /নয় প্রয়োজন , এটি করা হয় অনুমতি , তাদেরকে JSON ব্যবহার আরাম। আপনি যদি পালাতে না চান /, তবে করবেন না।
Andreas

35

জেএসএন স্পেক বলছে আপনি এগিয়ে স্ল্যাশ থেকে বাঁচতে পারেন, তবে আপনার দরকার নেই।


9
আপনি কি এই নির্দিষ্ট বিভাগে একটি লিঙ্ক যুক্ত করতে পারেন?
রায়ান গেটস

1
অনুমানটি এটি বলে না। আসলে এটি যা বলেছে তা হল আপনাকে দৃ solid় চরিত্র থেকে বাঁচতে হবে। Ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
জোয়া এবার্ট

10
@ জোয়াবার্ট: বিপরীত দৃ solid়তা অবশ্যই অব্যাহতি পেতে হবে, তবে আপনাকে কোনও শক্তির হাত থেকে বাঁচার দরকার নেই। অনুচ্ছেদ 9 বলছে "সমস্ত অক্ষর উদ্ধৃতি চিহ্নের মধ্যে রাখা যেতে পারে কেবলমাত্র যে অক্ষরগুলি এড়িয়ে চলতে হবে: উদ্ধৃতি চিহ্ন (U + 0022), বিপরীত কঠিন (U + 005C), এবং নিয়ন্ত্রণ অক্ষর U + 0000 থেকে U + 001F F "
হ্যারল্ড এল

4
ধন্যবাদ হ্যারল্ড! আপনি ঠিক বলেছেন, চিত্র 5 এও দেখানো হয়েছে, "ব্যতীত যে কোনও কোড পয়েন্ট ..." এ পরিষ্কারভাবে বলা হয়েছে যে / optionচ্ছিক।
জোয়া এবার্ট

15

কিছুক্ষণ আগে আমি একই প্রশ্ন জিজ্ঞাসা করেছি এবং নিজেই এর উত্তর দিতে হয়েছিল। আমি এখানে যা এলাম তা এখানে:

দেখে মনে হচ্ছে, আমার প্রথম চিন্তাটি [ যে এটি এর জাভাস্ক্রিপ্টের মূল থেকে এসেছে ] সঠিক ছিল।

'\/' === '/'জাভাস্ক্রিপ্ট, এবং তাদেরকে JSON হয় বৈধ জাভাস্ক্রিপ্ট। তবে, অন্য উপেক্ষিত পলায়ন (যেমন \z) জেএসএনে অনুমোদিত নয় কেন ?

এর মূল কীটি ছিল http://www.cs.tut.fi/~jkorpela/www/revsol.html , তারপরে http://www.w3.org/TR/htML4/appendix/notes.html#hB .3.2 । স্ল্যাশ পালানোর বৈশিষ্ট্যটি জেএসএনকে এইচটিএমএল (এসজিএমএল হিসাবে) এবং এক্সএমএল এম্বেড করার অনুমতি দেয়।


5
কাঠামোগত ডেটা পেলোড বিতরণ প্রক্রিয়াটিকে ভাষা নির্মাণের সাথে বেঁধে রাখা উচিত নয় ... কারণ ভবিষ্যতে এটি পরিবর্তিত হতে পারে ... তবে এটি যদি জেএসএন স্রষ্টার কেউ থাকত তবে ডিজাইনের সিদ্ধান্তগুলি ব্যাখ্যা করতে পারে।

'\ /' === '/' সুতরাং আমার জেএসএনপি পাওয়ার সময় আমার কীভাবে এগিয়ে ফেলা বন্ধ করা দরকার?
টিমমেটেজে

8

পিএইচপি ডিফল্টরূপে ফরোয়ার্ড স্ল্যাশগুলি থেকে রেহাই পায় যা সম্ভবত এটি কেন এত সাধারণভাবে প্রদর্শিত হয়। আমি নিশ্চিত না কেন, তবে সম্ভবত "</script>"কোনও <script>ট্যাগের মধ্যে স্ট্রিং এম্বেড করা অনিরাপদ হিসাবে বিবেচিত।

JSON_UNESCAPED_SLASHESপতাকাটিতে দিয়ে এই কার্যকারিতা অক্ষম করা যেতে পারে তবে মূল ফলাফল ইতিমধ্যে বৈধ জেএসএন হওয়ায় বেশিরভাগ বিকাশকারী এটি ব্যবহার করবেন না।


5

কুশল পিএইচপি!

JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHESডিফল্ট হতে হবে, না একটি (অদ্ভুত) বিকল্প ... কিভাবে পিএইচপি-বিকাশকারীদের কাছে এটা বলতে?

ডিফল্ট অধিকাংশ ঘন ব্যবহার করা আবশ্যক, এবং (বর্তমান) UTF8 হওয়া যেমন মান বহুল ব্যবহৃত। গিথুব বা অন্যান্য জায়গায় কতগুলি পিএইচপি-কোড টুকরাগুলির এই বহিরাগতকে "এইচটিএমএল এম্বেড করা" বৈশিষ্ট্যের প্রয়োজন?


2
ঠিক বলেছেন! তবে পিএইচপি ভবিষ্যতে সমস্ত অদ্ভুত ত্রুটিগুলি প্রচার করে, সমস্ত দুর্নীতিগ্রস্থ PHতিহাসিক পিএইচপি স্নিপেটগুলিতে যে কোনও পোকামাকড়ের মতো সারা পৃথিবীতে ছড়িয়ে পড়েছে তাতে আগের কোনও সাধারণ বাগগুলি ভাঙার জন্য নয়। সুতরাং পিএইচপি কর্তৃক গৃহীত সমস্ত ভুল সিদ্ধান্ত, যার অর্থ পিএইচপি সম্পর্কিত প্রায় সব সিদ্ধান্তই হয়ে ওঠে become আপনি মান পরিবর্তনের প্রত্যাশা করতে পারবেন না, সুতরাং প্রতিটি একক পিএইচপি বিকাশকারীকে অবশ্যই পিএইচপি-তে পাওয়া সমস্ত গুরুতর বাগগুলির বিরুদ্ধে এই সমস্ত অসীম সংখ্যক কার্যকারিতা জানতে হবে এবং প্রয়োগ করতে হবে। স্ট্যাকওভারফ্লো প্রবেশ করুন ..
টিনো

আপনি সম্পূর্ণ ভুল। এটি জাভাস্ক্রিপ্টের কারণে। নীচে নির্দেশিত হিসাবে। জেএস '\/' === '/'সত্য ফিরে। আমি আপনাকে সত্যকে অটল থাকার পরামর্শ দিচ্ছি। বেশিরভাগ লোকেরা কয়েকটি অসামঞ্জস্যপূর্ণ ফাংশন নাম সহ্য করতে সক্ষম হয়। কেবলমাত্র আপনি অতীত দেখতে পাচ্ছেন না যা পিএইচপিকে একটি খারাপ সরঞ্জাম করে না।
কোবোল্ট

1
হাই @ কোবোল্ট, এটি একটি পুরানো প্রশ্ন, আমি আজ পিএইচপি ব্যবহার করছি না ... তবে আলোচনার ব্লগ হিসাবে মূলটি হ'ল "সবচেয়ে ঘন ঘন ব্যবহার হওয়া উচিত" , তাই কুরুচিপূর্ণতা এই "সবচেয়ে ঘন ঘন ব্যবহার" উপেক্ষা করা সম্পর্কে জাভাস্ক্রিপ্ট এর (এছাড়াও কুৎসিত) আচরণ।
পিটার ক্রাউস

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