ব্যবহারকারী হিসাবে এক্সিকিউট এবং লগিন হিসাবে এক্সিকিউটের মধ্যে পার্থক্য কী দ্বিতীয়টি অপ্রত্যাশিতভাবে আচরণ করে?


10

একটি নির্দিষ্ট ব্যক্তি আমাদের ডেটাবেসগুলির মধ্যে একটি টেবিল ফাংশন ব্যবহার করতে পারে কিনা তা পরীক্ষা করতে সম্প্রতি আমি লগইন হিসাবে এক্সিকিউটি ব্যবহার করেছি using পরীক্ষাগুলিতে প্রমাণিত হয়েছিল যে তিনি পারতেন কিন্তু তিনি বারবার ব্যর্থতার কথা জানিয়েছেন।

ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য ব্যক্তি লগইন 'WEB' ব্যবহার করে এবং লগইন "WEB" এর সাথে সম্পর্কিত সেই ডাটাবেসে তার ব্যবহারকারীর 'WEB' রয়েছে তাই আমি নিম্নলিখিত স্ক্রিপ্টগুলি চেষ্টা করেছিলাম:

-- part 1
EXECUTE AS USER = 'WEB'
GO
SELECT 
    USER_NAME() AS 'user_name'
    ,SUSER_NAME() AS 'suser_name'
    ,SUSER_SNAME() AS 'suser_sname'
    ,SYSTEM_USER AS 'system_user'
GO
REVERT
GO

এবং

-- part 2
EXECUTE AS LOGIN = 'WEB'
GO
SELECT 
    USER_NAME() AS 'user_name'
    ,SUSER_NAME() AS 'suser_name'
    ,SUSER_SNAME() AS 'suser_sname'
    ,SYSTEM_USER AS 'system_user'
GO
REVERT
GO

প্রথম অংশটি ফলাফলের সাথে ভাল ছিল:

ওয়েব | ওয়েব | ওয়েব | ওয়েব

তবে দ্বিতীয় ফলাফলটি কিছুটা বিভ্রান্তিকর ছিল:

ডিবিও | ওয়েব | ওয়েব | ওয়েব

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


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

উত্তর:


7

sysadminগোষ্ঠীর সদস্য সর্বদা এতে ম্যাপ করা হয় dbo, যদিও এটি ডাটাবেসে সুস্পষ্ট ব্যবহারকারী থাকে। সুতরাং দেখে মনে হচ্ছে লগইনটির WEBসদস্য sysadmin, সুতরাং USER_NAME()সঠিকভাবে dboদ্বিতীয় ক্ষেত্রে ফিরে আসে ।


চেক এবং নিশ্চিত করা হয়েছে। এটি সত্যই সিসাদমিনের সদস্য ছিল। দেখা গেল যে এই প্রতিবেদনটি অন্য বিকাশকারীদের একজনের কাছে পৌঁছেছে এবং সঠিক সমাধানের পরিবর্তে তিনি কেবল লগইন সিসাদমিন ভূমিকা অর্পণ করেছিলেন। এমনকি আমি এই ঘটনার কথা ভাবিনি, আমি সত্যই হতাশ। তিনি ফিরে এলে আমরা কিছু গুরুতর কথা বলতে যাব। ধন্যবাদ, আজ নতুন কিছু শিখেছে।
gemisigo

এর অর্থ হ'ল আপনার অ্যাপ্লিকেশনটির (প্রতিবেদন?) সিসাদমিন সদস্যের ছদ্মবেশে অনুমতি রয়েছে। অনুমোদন শ্রেণিবদ্ধভাবে এটি কতটা অনুমোদিত তা দেখুন। সম্ভবত এখনই প্রতিবেদনটি যদি চান তবে অন্য কোনও sysadminসদস্যের ছদ্মবেশ তৈরি করতে পারে , তাই প্রতিবেদনের আবেদনটি ডি-ফ্যাক্টো সিসাদমিন। অর্থাৎ। ia সম্ভাব্য সুবিধার সম্ভাব্য উচ্চতা ভেক্টর আক্রমণ করে, এটি হ্যাকার দ্বারা বা সম্ভবত আপনার কর্মীরা ব্যবহার করতে পারেন।
রিমাস রুসানু

যদি রিপোর অ্যাপটিতে স্বতন্ত্র অনুমতি থাকে WEBএবং WEBসেখান থেকে সরানো হয় sysadminতবে দরজাটি বন্ধ রয়েছে। তবে এর চেয়ে কম কোনওটিই মূল্যবান নয়।
রিমাস রুসানু

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