কোনও দৃশ্যে সুরক্ষা শর্তাবলীর ব্যবহার এমভিসির লঙ্ঘন?


10

প্রায়শই কোনও ব্যবহারকারীর কাছে যা প্রদর্শিত হয় (উদাহরণস্বরূপ ওয়েব পৃষ্ঠায়) আংশিকভাবে সুরক্ষা পরীক্ষার উপর ভিত্তি করে তৈরি করা হবে। আমি সাধারণত ব্যবহারকারী-স্তর / এসিএল সুরক্ষাটিকে কোনও সিস্টেমের ব্যবসায়িক যুক্তির অংশ হিসাবে বিবেচনা করি। যদি কোনও দৃশ্যে শর্তসাপেক্ষে ইউআই উপাদানগুলি প্রদর্শন করতে সুরক্ষা পরীক্ষা করে, তবে এটি ব্যবসায়ের যুক্তি যুক্ত করে এমভিসি লঙ্ঘন করছে?


বিকল্প কি হবে?

1
কারও কারও কাছে এন্টি-প্যাটার্ন হিসাবে বিবেচনা করা সত্ত্বেও আপনি যা সেরা সুরক্ষা প্রদান করেন তা আপনি ব্যবহার করেন ।
zxcdw

উত্তর:


6

দুটি ধরণের সুরক্ষা শর্ত থাকতে পারে, একটি মডেলটিতে এবং অন্যটি ভিউতে। দৃশ্যটি বর্তমান ব্যবহারকারীর অনুমতিগুলির উপর নির্ভর করে প্রাসঙ্গিক উপাদানগুলির প্রদর্শন নিয়ন্ত্রণ করে, তবে মডেল অন্তর্নিহিত ডেটাতে অ্যাক্সেস নিয়ন্ত্রণ করে। যতক্ষণ না মডেলের সমস্ত সঠিক যাচাই / বৈধতা রয়েছে, ততক্ষণ দৃষ্টিভঙ্গির অভাব থাকলেও এখনও সুরক্ষা রয়েছে।

সাধারণত আপনার উভয়ই থাকতে হয়, যেহেতু বিভিন্ন স্তরের / ভূমিকার জন্য ভিউটি পরিবর্তন করা দরকার। নিয়ামকটি প্রাসঙ্গিক ডেটা প্রেরণ করে যা দর্শন পরিবর্তন করতে পারে, তবে দৃশ্যটিকে এখনও সঠিক ব্যবহারকারীর কাছে সামগ্রী লুকানোর / প্রদর্শনের জন্য সেই ডেটা দিয়ে কিছু করা দরকার।

এজন্য বেশিরভাগ টেম্প্লেটিং ফ্রেমওয়ার্কগুলিতে শর্তযুক্ত উপাদান থাকে ( হ্যান্ডলবার্স উদাহরণ):

{{#if isCurrentUserAdmin}}
    ....
{{/if}

সুতরাং এর অর্থ এই যে এটি লঙ্ঘন নয়, যতক্ষণ উপযুক্ত টুকরা সঠিক স্থানে থাকে।


4

হ্যা এবং না.

যদি আসল সুরক্ষা সিদ্ধান্তটি ভিউ দ্বারা নেওয়া হয়, তবে হ্যাঁ, আপনি এমভিসি লঙ্ঘন করছেন। যদি যাইহোক, ভিউটি মডেলটির আসল সিদ্ধান্তের প্রতিনিধিত্ব করে তবে আপনি ভাল আছেন। মডেল থেকে প্রাপ্ত তথ্যের উপর ভিত্তি করে কোন উপাদানগুলি প্রদর্শন করতে হবে সে সম্পর্কে সিদ্ধান্ত গ্রহণের দৃষ্টিতে কোনও ভুল নেই।

উদাহরণস্বরূপ, যদি আপনার কাছে একটি "সম্পাদনা" বোতাম থাকে যা কেবলমাত্র "সম্পাদক" অনুমতিযুক্ত ব্যবহারকারীদের জন্য দৃশ্যমান হয়, তবে বর্তমান ব্যবহারকারী কে এবং তার "সম্পাদক" অনুমতি আছে কিনা সেই মডেলকে জিজ্ঞাসা করা দৃষ্টিতেই ঠিক আছে, বোতামটি প্রদর্শিত হবে কি না তা সিদ্ধান্ত নিতে এই তথ্য ব্যবহার করে। তবে, ভিউটি যদি প্রমাণীকরণ এবং অনুমোদনের যুক্তি নিজেই করত তবে আপনি এমভিসি লঙ্ঘন করছেন।


2

আমি বলব না

তবে ভিন্ন কারণের জন্য @ আরভিকাউটিনহো বলেছিলেন (যদিও তিনি উইকিপিডিয়া উদ্ধৃত করেছেন যা আমার চিন্তায় ভুল অনুভব করে)

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

এটি দুই স্তরের সুরক্ষা বৈধতাটিকে মঞ্জুরি দেয়: ইউআই স্তরে তাই স্বাভাবিক ক্ষেত্রে যেমন একটি পোস্টব্যাক বিভক্ত হয়, তেমনি খারাপ অভিনেতাদের জন্য সার্ভার লেয়ারে যেখানে মডেলটি নিজের ভিতরে সুরক্ষা জ্ঞান বজায় রাখে তাই নিয়ন্ত্রণকারী তথ্যটি হাতছাড়া করে hands মডেল যা তাৎক্ষণিকভাবে এটি টস আউট করে।

এটির মতো দুটি স্তরের সুরক্ষা শিল্পের মান and ইউআই এবং মডেলটিতে (মডেলটির এটির প্রয়োজন প্রতিরক্ষা শেষ লাইন এবং ডেস্কটপ ক্লায়েন্ট বা কোনও সার্ভার ম্যানেজমেন্ট সরঞ্জামের মতো এমভিসি ওয়েব-অ্যাপের বাইরে যে কোনও ব্যবহারের জন্য বিশেষত গুরুত্বপূর্ণ)


উইকিপিডিয়ায় যে বক্তব্য দেওয়া হয়েছে যে "একজন নিয়ামক তার সম্পর্কিত দৃষ্টিভঙ্গির সাথে মডেলটির উপস্থাপনা পরিবর্তন করতে আদেশগুলি প্রেরণ করতে পারেন" মডেল-ভিউ-উপস্থাপকের কাছে আরও উপযুক্ত মনে হয় , যেমন ইন্টারেক্টিভ মডেলটির দ্বারা বাক্যাংশটি বর্ণিত বলে মনে হয় সেখানে এমভিসি-তে, একবার ভিউ রেন্ডার করা হয়, ভিউ এবং কন্ট্রোলারের মধ্যে আর কোনও পদক্ষেপ হয় না।
রবার্ট হার্ভে

1
@ রবার্টহারভে আমি সম্মতি জানাব যে এমভিসি সম্পর্কে আমার সংজ্ঞাটি বিবৃতিটির সাথে খাপ খায় না, তবে ভাগ্যবান আমাদের আমরা এমন একটি শিল্পে কাজ করি যেখানে কোনও সম্ভাব্যতার চেয়ে চুক্তির বহুত্বের দ্বারা যথার্থতা নির্ধারণ করা হয় কারণ এই সংজ্ঞাগুলি কেবল ইথারের সাথেই ভেসে ওঠে যেমন একটি ক্রমাগতভাবে বিকশিত ফাউন্ডেশন যার ফলে প্রত্যেককে তাদের নিজস্ব যাত্রাপথ তৈরি করতে দেয়। বা আরও সহজ কথায়, আমি সম্ভবত এখানে অন্য সবার মতোই ভুল।
জিমি হোফা

3
যে কারণে আমি মনে করি যে কোনওভাবেই লোকেরা এই ধরণের জিনিসটি সম্পর্কে অনেক বেশি প্যাডেন্টিক।
রবার্ট হার্ভে

1
@rvcoutinho আমি মোটেও বলব না যে আমি আক্ষরিক হয়েছি; আপনি আপনার পক্ষে রেফারেন্স পেয়েছেন, আমার কাছে যা পেয়েছে তা সবই আমার মতামত, তাই মনে মনে এর অর্থ আমি সম্ভবত ভুল হতে পারি যার কারণে আমি এটি উল্লেখ করেছি। আমি মনে করি আমার মতামত ভাগ করে নেওয়ার পক্ষে যথেষ্ট প্রশংসনীয়, যদিও আমার কোনও রেফারেন্স না থাকলেও যাইহোক আমি এটি করেছি, যদিও আমি যেমন বলেছি, আমি সম্ভবত ভুল হয়েছি।
জিমি হোফা

1
@ আরভকাউটিনহো: আসলে, আমি ওপি-র প্রশ্নের কথা উল্লেখ করছিলাম। :) নিয়মগুলির সাথে কোনও ভুল নেই, যদি না নিয়মগুলি কিছু করার পথে পায়।
রবার্ট হার্ভে

2

আমি বলব না

সাধারণত, এই ধরণের সুরক্ষা চেকগুলি নিয়ামক দ্বারা সম্পন্ন হতে চলেছে।

উইকিপিডিয়া থেকে :

কোনও নিয়ামক মডেলটির দর্শন উপস্থাপনা পরিবর্তন করতে এর সাথে সম্পর্কিত দৃশ্যে কমান্ড প্রেরণ করতে পারেন

এবং আমি মনে করি না যে এটি সরাসরি দৃষ্টিতে করা উচিত। উদাহরণস্বরূপ এটি যদি জাভাস্ক্রিপ্টের মাধ্যমে করা হয় তবে এটি কোনও সুরক্ষা সমস্যা হতে পারে (কেউ জাভাস্ক্রিপ্ট অক্ষম করতে পারে এবং প্রিভিলেজড ডেটা অ্যাক্সেস করতে পারে)।

আবার, উইকিপিডিয়া থেকে :

একটি দৃশ্য মডেল থেকে তথ্য যে এটি একটি জেনারেট করার প্রয়োজন অনুরোধ আউটপুট প্রতিনিধিত্ব


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

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

যে কারণে ব্যবহারকারীকে দেখার প্রয়োজন হয় না এমন দৃশ্যের উপাদানগুলি লুকিয়ে রাখতে ভিউয়ের প্রয়োজন। কন্ট্রোলার ডেটা চাক্ষুষ প্রতিনিধিত্ব তৈরি করার জন্য দায়ী নয়; দেখুন হয়। অবশ্যই, আপনি যা প্রদর্শন করছেন তা যদি এত সংবেদনশীল হয় যে তা ভিউ / উত্সেও থাকতে পারে না, তবে নিয়ামককে যা করতে হবে তা অন্যরকম দৃষ্টিভঙ্গি প্রত্যাবর্তন ।
রবার্ট হার্ভে

1
এটাই আমার বক্তব্য। মতামতটি আলাদা হওয়া উচিত। আমি যতদূর বুঝতে পারি, দেখে মনে হচ্ছে ভিউটি কেবলমাত্র ডেটা উপস্থাপনের যত্ন নেবে। উপস্থাপনের মাধ্যমে, আমি বোঝাতে চাইছি কীভাবে কোনও কিছু প্রদর্শন করা যায়, কখন তা প্রদর্শন করা যায় না। তবুও আপনার মন্তব্যগুলি সম্পূর্ণ প্রাসঙ্গিক।
rvcoutinho

ঠিক আছে, আমি মনে করি আমরা কেবল দুটি ভিন্ন জিনিসের জন্য একই অভিব্যক্তিটি ব্যবহার করছি। যাইহোক অন্যরকম দৃষ্টিভঙ্গি কী? তবে আমি মনে করি আমরা সর্বাধিক গুরুত্বপূর্ণ বিষয়ে একমত হই: এটি যদি সুরক্ষা সংবেদনশীল হয় তবে এটিকে দর্শন দ্বারা পরিচালনা করা উচিত নয়।
rvcoutinho

1

এই প্রশ্নের সাথে জড়িত বেশ কয়েকটি বিষয় রয়েছে।

  1. প্রমাণীকরণ (এই ব্যবহারকারী যিনি তিনি বলেন তিনি) এই দৃষ্টিভঙ্গির কোনও উদ্বেগ হওয়া উচিত নয়
  2. অনুমোদন (বর্তমান ব্যবহারকারীর না রাখার অনুমতি পায় এই ) হয় , কারণ এটি প্রভাবিত করতে পারে কি ব্যবহারকারী উপস্থাপিত হয়, একটি দেখুন উদ্বেগ। সুতরাং, সম্পাদনা-বোতামটি প্রদর্শনের জন্য কোডটি শর্তসাপেক্ষ মতো ঘিরে রাখা যেতে পারে if model.userCanEdit() ... endif
  3. কোন অনুমোদনের কোন ব্যবহারকারীর বৈশিষ্ট্যগুলি নির্ধারণ করে তা নির্ধারণ, এটি ব্যবসায়িক যুক্তি এবং এটি মডেলটিতে স্থাপন করা উচিত। (উদাহরণস্বরূপ যে 'সম্পাদনা' সুবিধার জন্য আপনার 2000 খ্যাতি থাকা দরকার; অথবা আপনাকে অবশ্যই লেখক বা মডারেটর হতে হবে)

0

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


0

যদি কোনও দৃশ্যে শর্তসাপেক্ষে ইউআই উপাদানগুলি প্রদর্শন করতে সুরক্ষা পরীক্ষা করে, তবে এটি ব্যবসায়ের যুক্তি যুক্ত করে এমভিসি লঙ্ঘন করছে?

হ্যাঁ, এটি এমভিসি লঙ্ঘন।

দৃশ্যটি কেবলমাত্র উপাদান প্রদর্শন করার জন্য রয়েছে এবং যুক্তিটি মডেলটিতে থাকা উচিত। দৃষ্টিভঙ্গিটি কিছু করার (আপনার ক্ষেত্রে, সুরক্ষাটি পরীক্ষা করে দেখুন), আপনি সেখানে যুক্তি স্থাপন করছেন।


তারপরে কীভাবে ভিউটি জানবে যে এডিট বোতামের মতো কিছু প্রদর্শন করা যায় না?
ম্যাট এস

@ ম্যাটস উপস্থাপক সেই বোতামটি প্রদর্শন করতে বা আড়াল করতে ভিউটিতে একটি ফাংশন কল করে (মডেলের কোনও অবস্থার উপর নির্ভর করে)।
BЈовић
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.