`স্থানীয়-ভেরিয়েবলগুলি সক্ষম করার নিরাপদ উপায়?


13

আমি প্রায় 18 বছর আগে আমার .emacs ফাইলটি আমার এক বন্ধুর কাছ থেকে পেয়েছি। মাঝখানে সমাহিত হ'ল enable-local-variablesবৈশিষ্ট্যের সুরক্ষা সম্পর্কিত প্রভাব সম্পর্কে নিম্নলিখিত অশুভ মন্তব্য সতর্কতা :

;; Date: Wed, 7 Dec 1994 11:57:50 -0600
;; From: blob@syl.dl.nec.com (David Blob)
;; Subject: Self-extracting emacs elisp code
;;
;; With all this talk about self extracting mail "viruses", a friend
;; showed me that in emacs (which I use to read mail, along with vm)
;; has the ability to self-extract elisp code. This feature seems to
;; be turned on by default, and it not only applies to mail read with
;; emacs, but rather every file visited (when the feature is on, of
;; course).
;;
;; The way it works is by having a line which reads "Local Variables:"
;; followed by the lisp variables you would like to set...well, it may
;; seem petty, but you can execute programs, make connections and much
;; more through cleverly written elisp code contained within.
;;
;; It's simple to turn off, at any rate...
;;
;; (setq enable-local-variables  f) ;; turns off feature  (in emacs 19)
;; (setq enable-local-variables  1) ;; makes it ask first (in emacs 19)
;; (setq inhibit-local-variables t) ;; turns off feature  (in emacs 18)
;;
;; Anyhow, I think the risks here speak for themselves...
;;
(setq enable-local-variables '())

সুতরাং আমি local-variablesবৈশিষ্ট্যটি বাস্তবে কখনও ব্যবহার করি নি যদিও মনে হয় এটি বেশ কার্যকর হতে পারে। enable-local-variablesস্বেচ্ছাসেবী কোড-ইনজেকশন আক্রমণে আমাকে প্রকাশ না করে এমন কোনও উপকারী উপায় আছে কি ?

উত্তর:


13

18 বছর আগে, আপনি চিন্তিত ছিল ঠিক ছিল। তবে সময় এগিয়েছে। ইমাস 22, যেহেতু নিরাপদ স্থানীয় ভেরিয়েবলগুলি শ্বেত তালিকাভুক্ত করার জন্য একটি শালীন অন্তর্নির্মিত ব্যবস্থা রয়েছে। বিশদটি ইমাস লিসপ ম্যানুয়ালিতে নথিভুক্ত করা হয়েছে । সর্বাধিক গুরুত্বপূর্ণ দিকগুলি হ'ল:

  • লিসপ লেখকগণ প্রতিটি ভেরিয়েবলের জন্য নিরাপদ মান ঘোষণা করতে পারেন। এটি একটি শ্বেতলিস্ট: লিস্প প্রোগ্রামার যদি বিশেষ কিছু না করে থাকে তবে সমস্ত মান নিরাপদ হিসাবে বিবেচিত হবে।
  • যদি (ডিফল্ট) enable-local-variablesএ সেট করা থাকে t, ইমাস স্বয়ংক্রিয়ভাবে নিরাপদ মান সেট করবে এবং কোনও ফাইল যদি অনিরাপদ মান সেট করার চেষ্টা করে তবে তা নিশ্চিতকরণের জন্য প্রম্পট করবে। ব্যবহারকারী একবার প্রদত্ত ভেরিয়েবলের জন্য একটি মান অনুমোদন করলে, এটি স্বয়ংক্রিয়ভাবে রেকর্ড হয়ে যায় এবং ইমাকগুলি আবার একই ভেরিয়েবলের জন্য একই মান সম্পর্কে জিজ্ঞাসা করবে না।
  • যদি enable-local-variablesসেট করা থাকে :safe, ইমাসগুলি স্বয়ংক্রিয়ভাবে নিরাপদ মান সেট করবে এবং অন্যদের উপেক্ষা করবে।

সুতরাং আপনাকে অনুরোধ (setq enable-local-variables :safe)জানাতে আপত্তি না জানলে বা কোনও ঝুঁকি না নিয়ে এবং কোনও ব্যবহারকারীর ইন্টারফেসের অজানা ছাড়াই সাধারণ সুবিধা (ইনডেন্ট স্টাইল, টাইমস্ট্যাম্প ফর্ম্যাট ইত্যাদি) পেতে আপনি ডিফল্ট সেটিংস রাখতে পারেন ।


(সম্পূর্ণতার জন্য / যদি কেউ কৌতূহলী হন: 2007 এ
ইম্যাকস

9

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

এর অর্থ আপনি স্থানীয় ভেরিয়েবলগুলি নিরাপদে সক্ষম করতে পারবেন। আপনি কেবলমাত্র এর ডিফল্ট মানটি রেখে যেতে পারেন t- ইমাক্স আপনাকে ভেরিয়েবল সেট করে রাখা উচিত কিনা এটি নিরাপদ বলে মনে করে না এবং এটি প্রথমে পরীক্ষা করতে পারেন।

নিশ্চিত করুন আপনি কি করবেন এই ভেরিয়েবলের মান নির্ধারণ :all, এবং কি করতে প্রথমে তাদের সেটিং যদি এ গিয়ে Emacs অনুরোধ জানাবে আগে ভেরিয়েবলের মান দিকে তাকাও। আপনি :safeকেবলমাত্র ভেরিয়েবলগুলি সেট করতে ব্যবহার করতে পারেন যা ইমাস নিরাপদ বলে মনে করে এবং বাকিগুলি উপেক্ষা করে, তবে আপনি কিছু জিনিস এইভাবে মিস করতে পারেন।

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