অন্যরা যেমন বলেছে, আপনার দুটোই করা উচিত। কারণটা এখানে:
মক্কেলের পক্ষে
আপনি প্রথমে ক্লায়েন্ট পক্ষের ইনপুটটি বৈধ করতে চান কারণ আপনি গড় ব্যবহারকারীর পক্ষে আরও ভাল প্রতিক্রিয়া জানাতে পারেন । উদাহরণস্বরূপ, যদি তারা একটি অবৈধ ইমেল ঠিকানা প্রবেশ করে এবং পরবর্তী ক্ষেত্রে চলে যায়, আপনি তত্ক্ষণাত ত্রুটি বার্তাটি প্রদর্শন করতে পারেন। এই পদ্ধতিতে ব্যবহারকারীরা ফর্মটি জমা দেওয়ার আগে প্রতিটি ক্ষেত্র সংশোধন করতে পারেন ।
আপনি যদি কেবল সার্ভারে বৈধতা দিয়ে থাকেন তবে তাদের ফর্মটি জমা দিতে হবে, একটি ত্রুটি বার্তা পেতে হবে এবং সমস্যাটি অনুসন্ধান করার চেষ্টা করতে হবে।
(ব্যবহারকারীর আসল ইনপুট ভরাট করে সার্ভার ফর্মটি পুনরায় রেন্ডার করে এ ব্যথা লাঘব করা যায়, তবে ক্লায়েন্ট-সাইডের বৈধতা এখনও আরও দ্রুত))
সার্ভার সাইড
আপনি সার্ভারের পাশ দিয়ে বৈধতা দিতে চান কারণ আপনি সেই দূষিত ব্যবহারকারীর হাত থেকে রক্ষা করতে পারবেন , যিনি সহজেই আপনার জাভাস্ক্রিপ্টটি বাইপাস করতে পারেন এবং সার্ভারে বিপজ্জনক ইনপুট জমা দিতে পারেন।
আপনার ইউআই-তে বিশ্বাস করা খুব বিপজ্জনক। তারা কেবল আপনার ইউআই-কে অপব্যবহার করতে পারে না, তবে তারা আপনার ইউআই মোটেও ব্যবহার করতে পারে না, এমনকি একটি ব্রাউজারও ব্যবহার করতে পারে না । ব্যবহারকারী যদি ম্যানুয়ালি ইউআরএল সম্পাদনা করে, বা তাদের নিজস্ব জাভাস্ক্রিপ্ট চালায়, বা অন্য সরঞ্জামের সাহায্যে তাদের এইচটিটিপি অনুরোধগুলি টুইট করে? যদি তারা curl
উদাহরণস্বরূপ বা কোনও স্ক্রিপ্ট থেকে কাস্টম এইচটিটিপি অনুরোধগুলি প্রেরণ করে ?
( এটি তাত্ত্বিক নয়; উদাহরণস্বরূপ, আমি একটি ট্র্যাভেল সার্চ ইঞ্জিনে কাজ করেছি যা ব্যবহারকারীর অনুসন্ধানটি অনেক অংশীদার এয়ারলাইনস, বাস সংস্থাগুলি ইত্যাদিতে পুনরায় জমা দিয়েছিল যাতে POST
অনুরোধ প্রেরণ করে যে ব্যবহারকারী প্রতিটি সংস্থার অনুসন্ধান ফর্ম পূরণ করেছে, তারপরে জড়ো এবং সাজানো হয়েছে) সমস্ত ফলাফল Those এই সংস্থাগুলির ফর্ম জেএস কখনই কার্যকর করা হয়নি এবং এটি আমাদের পক্ষে অত্যন্ত গুরুত্বপূর্ণ যে তারা ফেরত এইচটিএমএলে ত্রুটি বার্তা সরবরাহ করে। অবশ্যই, একটি এআইপিআই চমৎকার হত তবে আমাদের এটিই করতে হয়েছিল had )
এটির জন্য অনুমতি না দেওয়া কেবল সুরক্ষা দৃষ্টিকোণ থেকে নির্বুদ্ধ নয়, মানহীনও নয়: কোনও ক্লায়েন্টকে তারা যা খুশি তাই HTTP প্রেরণের অনুমতি দেওয়া উচিত এবং আপনার সঠিক প্রতিক্রিয়া জানানো উচিত। এর মধ্যে বৈধতা রয়েছে।
সামঞ্জস্যের জন্য সার্ভার সাইডের বৈধতাও গুরুত্বপূর্ণ - সমস্ত ব্যবহারকারী, এমনকি তারা ব্রাউজার ব্যবহার করছেন না কেন, জাভাস্ক্রিপ্ট সক্ষম করা থাকবে।
সংযোজন - ডিসেম্বর 2016
কিছু বৈধতা রয়েছে যা সার্ভার-সাইড অ্যাপ্লিকেশন কোডেও সঠিকভাবে করা যায় না এবং ক্লায়েন্ট-সাইড কোডে একেবারে অসম্ভব , কারণ তারা ডাটাবেসের বর্তমান অবস্থার উপর নির্ভর করে। উদাহরণস্বরূপ, "অন্য কেউ সেই ব্যবহারকারীর নামটি নিবন্ধভুক্ত করেনি", বা "আপনি যে ব্লগ পোস্টে মন্তব্য করছেন সেগুলি এখনও বিদ্যমান", বা "কোনও বিদ্যমান সংরক্ষণ আপনার অনুরোধের তারিখগুলিকে ওভারল্যাপ করে না", বা "আপনার অ্যাকাউন্টের ভারসাম্য এখনও সেই ক্রয়টি কভার করার জন্য যথেষ্ট নয়" । " কেবলমাত্র ডাটাবেসই নির্ভরযোগ্যভাবে ডেটা যাচাই করতে পারে যা সম্পর্কিত ডেটার উপর নির্ভর করে। বিকাশকারীরা নিয়মিত এটি স্ক্রু করে তবে পোস্টগ্রিএসকিউএল কিছু ভাল সমাধান সরবরাহ করে ।