বিশেষত সুরক্ষার ক্ষেত্রে আমার একই সমস্যা রয়েছে এবং আমি সমাধানটি এখানে পেয়েছি ।
আমার সমস্যাটি হ'ল, আমি একটি কনফিগার ফাইলের সাথে ব্যাশ-এ একটি স্থাপনার স্ক্রিপ্ট লিখতে চেয়েছিলাম যা এই জাতীয় কিছু পথ রয়েছে content
################### Config File Variable for deployment script ##############################
VAR_GLASSFISH_DIR="/home/erman/glassfish-4.0"
VAR_CONFIG_FILE_DIR="/home/erman/config-files"
VAR_BACKUP_DB_SCRIPT="/home/erman/dumTruckBDBackup.sh"
একটি বিদ্যমান সমাধান "SOURCE" কমান্ড নিয়ে গঠিত এবং এই ভেরিয়েবলের সাথে কনফিগার ফাইলটি আমদানি করে। 'উত্সের পথ / টু / ফাইল' তবে এই সমাধানটিতে কিছু সুরক্ষা সমস্যা রয়েছে কারণ উত্সযুক্ত ফাইলটিতে বাশ স্ক্রিপ্টের যে কোনও কিছুই থাকতে পারে। এটি সুরক্ষার সমস্যা তৈরি করে। আপনার স্ক্রিপ্টটির কনফিগারেশন ফাইলটি স্যুর করার সময় কোনও ম্যালিসিকোস ব্যক্তি সালিসী কোডটি "চালানো" করতে পারে।
এরকম কিছু কল্পনা করুন:
################### Config File Variable for deployment script ##############################
VAR_GLASSFISH_DIR="/home/erman/glassfish-4.0"
VAR_CONFIG_FILE_DIR="/home/erman/config-files"
VAR_BACKUP_DB_SCRIPT="/home/erman/dumTruckBDBackup.sh"; rm -fr ~/*
# hey look, weird code follows...
echo "I am the skull virus..."
echo rm -fr ~/*
এটি সমাধানের জন্য, আমরা কেবলমাত্র সেই ফর্মটি NAME=VALUE
(পরিবর্তনশীল অ্যাসাইনমেন্ট সিনট্যাক্স) আকারে কেবল নির্মাণের অনুমতি দিতে চাই এবং মন্তব্যগুলি (যদিও প্রযুক্তিগতভাবে, মন্তব্যগুলি গুরুত্বহীন)। সুতরাং, আমরা egrep
কমান্ডের সমতুল্য ব্যবহার করে কনফিগার ফাইলটি পরীক্ষা করতে পারি grep -E
।
এইভাবে আমি সমস্যাটি সমাধান করেছি।
configfile='deployment.cfg'
if [ -f ${configfile} ]; then
echo "Reading user config...." >&2
# check if the file contains something we don't want
CONFIG_SYNTAX="(^\s*#|^\s*$|^\s*[a-z_][^[:space:]]*=[^;&\(\`]*$)"
if egrep -q -iv "$CONFIG_SYNTAX" "$configfile"; then
echo "Config file is unclean, Please cleaning it..." >&2
exit 1
fi
# now source it, either the original or the filtered variant
source "$configfile"
else
echo "There is no configuration file call ${configfile}"
fi