কেন আমি এস্ক_আরএল ব্যবহার করব?


12

এই জিনিসটি আমার কোডিংকে কঠিন করে তোলে। ওয়ার্ডপ্রেস কোডেক্স সুরক্ষার বিষয়ে অস্পষ্টভাবে কথা বলে এস্ক_আরল ব্যবহারের কারণ বলে। তবে আসলেই কি ঝামেলার মূল্য আছে?

উদাহরণস্বরূপ, কী গুরুত্বপূর্ণ, তা ব্যবহার করে ব্যবহারিক সুরক্ষা সুবিধা

<?php echo esc_url( home_url( '/' ) ); ?>

পরিবর্তে

<?php echo home_url() ?>

পিএস: আমি থিম বিকাশের কথা বলছি না, তবে একটি নির্দিষ্ট সাইট সম্পর্কে বলছি।

উত্তর:


12

আপনি যদি ডেটা ভ্যালিডেশনে ডকুমেন্টেশন চেক করেন তবে এতে ফাংশনটি সম্পর্কে বলা আছে:

ইউআরএলগুলি স্যানিটাইজ করার সময় সর্বদা এসকে_আরল ব্যবহার করুন (পাঠ্য নোডে, বৈশিষ্ট্য নোডে বা অন্য কোথাও)। এমন ইউআরএলগুলি প্রত্যাখ্যান করে যা সরবরাহিত শ্বেত তালিকাভুক্ত প্রোটোকলগুলির একটি নয় [...], অবৈধ অক্ষরগুলি মুছে ফেলে এবং বিপজ্জনক চরিত্রগুলি সরিয়ে দেয়।

সেখানে আপনার এটি রয়েছে - ব্যবহারিক সুরক্ষা সুবিধা। বৈধ প্রোটোকল, কোনও নোংরা অক্ষর নেই।

প্রয়োজনীয়তা সম্পর্কে উত্তর দৃ firm ়ভাবে হ্যাঁ । এস্কেপিং আউটপুট হ'ল সর্বাধিক প্রাথমিক সুরক্ষা অনুশীলন।


2
সমস্ত যথাযোগ্য সম্মানের সাথে, আমি দেখতে পাচ্ছি না যে উদাহরণস্বরূপ হোম লিঙ্কটি কীভাবে সুরক্ষা ঝুঁকি তৈরি করতে পারে। হতে পারে এই নির্দেশিকা থিম তৈরির জন্য এবং "ব্যক্তিগত" কোডের জন্য প্রয়োগ করে না? সর্বোপরি, এইচটিএমএল এর বাড়ির ঠিকানা এবং অন্যান্য লিঙ্কগুলি হার্ডকোড করা এবং সুরক্ষা ঝুঁকি থাকলে পিএইচপি ব্যবহার না করা ভাল?
আইএক্সএন

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

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

3

ঠিক আছে, সমস্ত ব্যবহারকারীর ইনপুটটি স্যানিটাইজ করা উচিত ... আপনি যে urlটি ইনজেক্ট করেন তা যদি ব্যবহারকারী ইনপুট না হয় (যেমন আপনার সম্পূর্ণরূপে বিশ্বাস করা এমন ব্যক্তির দ্বারা সাইট সেটিং, হার্ডকোডযুক্ত মান) তবে আপনি এসকে-ইউআরএল থেকে নিজেকে মুক্তি দিতে পারেন।

তবে আমি যদি আপনার সাইটে সেই url ইনজেক্ট করতে পারি তবে আমি খুব সহজেই কিছু পরিস্থিতিতে জেএস কোড, বা পুনর্নির্দেশ কোড ... বা এমনকি সার্ভার সাইড কোডও ইনজেক্ট করতে পারি।

এটি সেশন হাইজ্যাকিং এবং আপনার ব্যবহারকারীদের অ্যাকাউন্টগুলি চুরি হয়ে যাওয়ার এবং অন্যান্য খারাপ বিকল্পগুলির দিকে পরিচালিত করতে পারে।

সম্পাদনা:

আপনার উদাহরণে esc_url( home_url( '/' ) );
এটি একটি অর্ধ-হার্ডকোডযুক্ত মানকে চালিত করে! সুতরাং esc_urlনির্মূল করা যেতে পারে।
এটি বলেছিল যে আমি এখনও দেখছি না যে যখন কোনও হুমকি রয়েছে এবং যখন নেই এবং সাধারণত প্রতিটি মানের জন্য এসএস_আরএল () রাখার পরামর্শ দিই কেন তার মধ্যে পার্থক্যকে কেন বিরক্ত করবেন।


3
"আপনার বিশ্বাস কারও দ্বারা সাইটের সেটিং" এখনও আক্ষরিকভাবে ব্যবহারকারী ইনপুট। :)
বিরল

@ রর্স্ট হ্যাঁ, আমি আপনার সাথে আছি, তবে এসকি_আরল ব্যবহার করে তিনি এতটা "অসন্তুষ্ট" হয়েছিলেন, আমি কিছুটা ক্ষমা করে দিয়েছি।
টোমর ডব্লিউ

2

আরেকটি জিনিস আপনার মাথা রাখা আবশ্যক সম্পর্কে esc_url()ভালো কিছু হয় <a href="SANITIZE_THIS_URL">your_text</a>আপনি একটি লিঙ্কের জন্য href বৈশিষ্ট্যটির, অথবা একটি চিত্র উপাদান জন্য src অ্যাট্রিবিউট মত, আপনার HTML আউটপুটে URL ব্যবহার করতে যাচ্ছেন .যদি, আপনি ব্যবহার করা উচিত esc_url()

esc_url_raw()এটি অন্য ক্ষেত্রে যেখানে আপনি একটি পরিষ্কার ইউআরএল চান, তবে আপনি চান না যে HTML সত্ত্বাগুলি এনকোড হওয়া উচিত। সুতরাং কোনও নন-এইচটিএমএল ব্যবহার (ডিবি, পুনর্নির্দেশ) এটি ব্যবহার করবে।

esc_url_raw()ফাংশন প্রায় কাছাকাছি যেমন একই কাজ করতে হবে esc_url(), কিন্তু এটা ডিকোড সত্ত্বা না করবে না, যার অর্থ এটি প্রতিস্থাপন & & ইত্যাদি # 038 সঙ্গে করা হবে না। মার্ক যেমন ইঙ্গিত করেছেন, এটি esc_url_raw()ডাটাবেস অনুসন্ধান, পুনঃনির্দেশ এবং HTTP ফাংশনগুলিতে ব্যবহার করা নিরাপদ , যেমন _ wp_remote_get () ' এস্ক_আর_আরউ (


1

esc_url একটি বৈধ এইচটিএমএল উত্পাদন করতে ব্যবহৃত হয় (ইনপুট স্যানিটাইজ করার জন্য নয়)। আপনি যে কোনও সময় এটি ব্যবহার করতে হবে আপনি 100% নিশ্চিত নন যে আপনি যা আউটপুট দিতে চান তা সেই প্রসঙ্গে একটি বৈধ HTML।


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